2017-11-02 4 views
1

Ich erstelle eine Winforms-App und verwende Microsoft.Office.Interop.Word, um ein Dokument zu öffnen und die Anzahl der Seiten abzurufen. Es funktioniert normalerweise gut. Bei bestimmten Dateien erstellt er dabei einen neuen Ordner ("Name des Dokuments" _files) und erstellt in diesem Ordner drei neue Dateien (colorchememapping.xml, filelist.xml und themedata.thmx). Das fragliche Dokument ist ein Word 97-2003 Doc mit der Erweiterung .doc. Bei anderen Dateien desselben Typs wird dies nicht ausgeführt. Nur mit bestimmten. Die Anzahl der Seiten wird trotzdem korrekt zurückgegeben. Dies ist der Code Ich verwende:C# Microsoft.Office.Interop.Word erstellt unerwünschten Ordner mit XML- und Designdateien. Warum?

public int PageCountWord(object Path) 
    { 
     // Get application object 
     Microsoft.Office.Interop.Word.Application WordApplication = new Microsoft.Office.Interop.Word.Application(); 

     // Get document object 
     object Miss = System.Reflection.Missing.Value; 
     object ReadOnly = false; 
     object Visible = false; 
     Microsoft.Office.Interop.Word.Document Doc = WordApplication.Documents.Open(ref Path, ref Miss, ref ReadOnly, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Visible, ref Miss, ref Miss, ref Miss, ref Miss); 

     // Get pages count 
     Microsoft.Office.Interop.Word.WdStatistic PagesCountStat = Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages; 
     int PagesCount = Doc.ComputeStatistics(PagesCountStat, ref Miss); 
     Doc.Close(); 
     WordApplication.Quit(); 
     return PagesCount; 
    } 

Und es erstellt die Ordner und Dateien, die während der Doc.Close() Linie.

Wer weiß, warum das passieren würde, und wenn ich es verhindern kann? (anders als die Erforschung des Ordners, wenn ich fertig bin und alles neu erstellte löschen)

Außerdem enthalten die Dokumente leider vertrauliche Informationen, so dass ich einen nicht hochladen kann. Hoffentlich hat jemand das gleiche Problem hat, und entdeckte eine Lösung

+0

Ich mag, dass der Application.Quit() -Methode hinzufügen würde akzeptiert drei optionale Paramater (zwei Aufzählungen und ein boolean) und dass keine Kombination von diesen verhindert dieses Verhalten. https://msdn.microsoft.com/en-us/vba/word-vba/articles/application-quit-methodword –

+1

Haben Sie versucht, 'SaveChanges: false' an die Methode zum Schließen von Dokumenten zu übergeben? – stuartd

+0

Ja, ich habe das versucht. Das ist einer der optionalen Parameter. –

Antwort

0

Abschlussarbeitscode:

public int PageCountWord(object Path) 
    { 
     // Get application object 
     Microsoft.Office.Interop.Word.Application WordApplication = new Microsoft.Office.Interop.Word.Application(); 

     // Get document object 
     object Miss = System.Reflection.Missing.Value; 
     object ReadOnly = false; 
     object Visible = false; 
     object SaveChanges = WdSaveOptions.wdDoNotSaveChanges; 

     Microsoft.Office.Interop.Word.Document Doc = WordApplication.Documents.Open(ref Path, ref Miss, ref ReadOnly, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Miss, ref Visible, ref Miss, ref Miss, ref Miss, ref Miss); 

     // Get pages count 
     Microsoft.Office.Interop.Word.WdStatistic PagesCountStat = Microsoft.Office.Interop.Word.WdStatistic.wdStatisticPages; 
     int PagesCount = Doc.ComputeStatistics(PagesCountStat, ref Miss); 
     Doc.Close(SaveChanges); 
     WordApplication.Quit(); 
     return PagesCount; 
    } 
+0

Ich habe gerade festgestellt, dass ich diesen Optionsparameter verwende, aber in meinem Fall, der von doc zu html geht, erstellt er einen Ordner voller xmls. Irgendwelche anderen Gedanken dazu? –

+0

Es ist auch nicht in der Close-Methode, sondern in der SaveAs-Methode, und keines der hier beschriebenen Attribute scheint zu helfen. https://msdn.microsoft.com/en-us/library/microsoft.office.tools.word.document.saveas(v=vs.120).aspx –

+0

Gelöst es. und vielleicht kann es anderen helfen. Beim Speichern als Dokument habe ich Word.WdSaveFormat.wdFormatHTML verwendet. Ich änderte zu Word.WdSaveFormat.wdFormatFilteredHTML und der Ordner wird nicht mehr erstellt und die Ausgabedatei ist auch sauberer. –

Verwandte Themen