格式为wdFormatDocument97的Word文档SaveAs2

时间:2016-07-21 15:32:49

标签: c# ms-word interop document save-as

我正在使用Microsoft Interop Word 15.0.0.0版来创建新的Word文档,在其中插入一些文本并保存。

当我使用以下命令保存它时:

document.SaveAs2(wordFilePath);

文档以DOCX格式保存。

但是当我使用以下命令保存它时:

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

该文档似乎保存为Word-97 DOC(Windows资源管理器显示它带有Word-97 DOC图标和类型),但它实际上内部保存为DOCX(我可以通过两种方式看到它:它具有相同的大小对应的DOCX,当我用Word-2016打开它并选择SaveAs时,默认的保存格式是DOCX!)。

如何以真实文档-97格式保存文档?

以下是用于创建新Word文档的函数,其类型取决于给定文件路径的扩展名(DOC与DOCX):

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;
}

以下是用于调用此函数的代码:

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

1 个答案:

答案 0 :(得分:0)

这是一个相当愚蠢的错误...比较'==" .doc" '而不是'==" doc" ...

由于SaveAs2收到带有扩展名" .doc"的文件路径,因此我没有注意到这一点。并且没有WdSaveFormat,它 - 奇怪的是 - 创建了一个Word文档文件,我在这里解释了这个问题......