2009-10-06 12 views
3

Je tente de modifier certaines propriétés CustomDocumentProperties pour un document .docx. J'ai été capable de lire la valeur actuelle et de la modifier, mais lorsque je sauvegarde le document, les modifications apportées aux champs personnalisés sont perdues.Enregistrement de propriétés de document Word 2007 dans C# 2.0

je la méthode suivante dans une classe DocAccessor (qui sert d'interface pour mes fichiers doc):

void SetInfo(string key, string val) { 
    object custom_properties = current_doc.CustomDocumentProperties; 
    Type custom_properties_type = custom_properties.GetType(); 
    custom_properties_type.InvokeMember("Item", BindingFlags.Default | BindingFlags.SetProperty, null, custom_properties, new object[] { key, val }); 
} 

ailleurs je l'appelle:

doc_accessor.GetInfo("Number") //returns 5 
doc_accessor.SetInfo("Number", "6"); 
doc_accessor.GetInfo("Number") //returns 6 
doc_accessor.SaveAndClose(); 
doc_accessor.Open(); //it retains the path, so I don't need to respecify 
doc_accessor.GetInfo("Number") //returns 5 

Ma fonction doc_accessor.SaveAndClose() fonctionne correctement comme j'ai modifié le chemin d'enregistrer à un emplacement différent et il l'a fait ... mais sans écrire le CustomDocumentProperties modifié. Cela donne l'impression qu'il existe une étape de validation qui me manque, mais que current_doc.Save() ne devrait pas gérer cela?

Répondre

1

http://support.microsoft.com/kb/195425

http://msdn.microsoft.com/en-us/library/y1xatbkd(VS.80).aspx

Je ne sais pas si l'un d'entre eux va aider. mais c'est là que je commencerais.

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.documentclass.saved(office.11).aspx

Désolé sur les liens que j'ai dû enlever la tête de protocole parce que la pile ne pense pas que je devrais être en mesure d'avoir plus d'un lien dans mes réponses parce que je ne suis pas un vrai membre

+0

Merci! La définition de current_doc.Saved à false a fait l'affaire. –

1

J'ai résolu il y a 2 minutes le même problème.

Lorsque vous ajoutez/modifier les propriétés personnalisées semble que le document est pas changed, de sorte que le WordApplication.ActiveDocument.Saved est encore true.

Set à false puis appeler la méthode Save du document, il fonctionnera !!

Questions connexes