2016-07-21 3 views
1

Ich verwende Microsoft Interop Word Version 15.0.0.0, um ein neues Word-Dokument zu erstellen, Text einzufügen und zu speichern.Word-Dokument SaveAs2 im Format wdFormatDocument97

Wenn ich es mit dem folgenden Befehl bin Sparend:

document.SaveAs2(wordFilePath); 

das Dokument im Format DOCX gespeichert wird.

Aber wenn ich es speichern Sie den folgenden Befehl:

document.SaveAs2(wordFilePath, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument97); 

das Dokument scheinbar wird gespeichert als Word-97 DOC (Windows-Explorer-Anzeige es mit Word-97 DOC-Symbol und Typ), aber es wird wirklich intern als DOCX gespeichert (ich kann das auf zwei Arten sehen: es hat die gleiche Größe wie die entsprechende DOCX, und wenn ich es mit Word-2016 öffne und SaveAs wähle, ist das Standard-Speicherformat DOCX!).

Wie kann ich ein Dokument im echten Dokument-97-Format speichern?

Hier ist die Funktion verwendet, um ein neues Word-Dokument zu erstellen, deren Typ auf der Verlängerung hängt (DOC vs. DOCX) gegebener Dateipfad:

public static void TextToMsWordDocument(string body, string wordFilePath) 
{ 
    Microsoft.Office.Interop.Word.Application winword = new Microsoft.Office.Interop.Word.Application(); 
    winword.Visible = false; 
    object missing = System.Reflection.Missing.Value; 
    Microsoft.Office.Interop.Word.Document document = winword.Documents.Add(ref missing, ref missing, ref missing, ref missing); 
    if (body != null) 
    { 
     document.Content.SetRange(0, 0); 
     document.Content.Text = (body + System.Environment.NewLine); 
    } 
    if (System.IO.Path.GetExtension(wordFilePath).ToLower() == "doc") 
     document.SaveAs2(wordFilePath, Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatDocument97); 
    else // Assuming a "docx" extension: 
     document.SaveAs2(wordFilePath); 
    document.Close(ref missing, ref missing, ref missing); 
    document = null; 
    winword.Quit(ref missing, ref missing, ref missing); 
    winword = null; 
} 

Und hier ist der Code verwendet diese Funktion aufzurufen:

TextToMsWordDocument("abcdefghijklmnopqrstuvwxyz", "text.doc"); 
TextToMsWordDocument("abcdefghijklmnopqrstuvwxyz", "text.docx"); 
+1

Ich habe versucht, dies mit einem dokumentbasierten Add-in zu replizieren, aber es zeigte nicht die gleichen Symptome, die Sie erwähnen, und die Zip-Struktur unterscheidet sich ziemlich vom docx-Format. Möglicherweise müssen Sie ein minimales, vollständiges, überprüfbares Beispiel veröffentlichen. http://stackoverflow.com/help/how-to-ask – Chris

+1

Auch welche Version von Word? Ich testete 2010. – Chris

+0

@Chris: Ich verwende Word-2016 und Interop.Word Version 15.0.0.0. Diese Details und eine kurze Version meines Codes in meiner Frage hinzugefügt. Vielen Dank. – Ofer

Antwort

0

es ist ein ziemlich dummer Fehler gewesen ... vergleichen "==‚.doc‘‚statt‘==‚doc‘...

ich es nicht bemerkt, aufgrund der Tatsache, dass wenn SaveAs2 eine Datei pat erhalten hat h mit der Erweiterung ".doc" und kein WdSaveFormat, es - seltsam genug - erstellt eine Word-Dokument-Datei, die das Problem hatte ich hier erklärt ...