C# 保存Word文档

C# 保存Word文档,c#,ms-word,C#,Ms Word,我想根据Word安装的版本保存Word文档 如果是Word 2003(适当的版本号为11),扩展名为DOC 如果Word版本高于2003,则扩展名为DOCX 差异反映在发送到SaveAS方法的第二个参数中: object fileFormat = GraphDocsSettings.Default.WordInstalledVersion > 11.0? WdSaveFormat.wdFormatXMLDocument : WdSaveFormat

我想根据Word安装的版本保存Word文档

如果是Word 2003(适当的版本号为11),扩展名为
DOC
如果Word版本高于2003,则扩展名为
DOCX

差异反映在发送到
SaveAS
方法的第二个参数中:

object fileFormat = GraphDocsSettings.Default.WordInstalledVersion > 11.0?     
                WdSaveFormat.wdFormatXMLDocument : WdSaveFormat.wdFormatDocument;

wordDoc.SaveAs(ref outputFile, fileFormat, ref missing, ref missing, ref missing,
                           ref missing, ref missing, ref missing, ref missing,
                           ref missing, ref missing, ref missing, ref missing,
                           ref missing, ref missing, ref missing);  
但是,在使用Interop.Word 11.0时,我遇到以下错误:

Microsoft.Office.Interop.Word.WDSaveFormat does not contain a definition for wdFormatXMLDocument.  

有什么想法吗?

这是因为您使用了错误版本的互操作程序集。您不能引用仅存在于更高版本的框架中的值


您应该使用更高的互操作版本,或者创建两个单独的项目,一个用于旧版本的互操作程序集,一个用于更高版本。

不确定不同word版本之间的API是否完全相同

如果我可以提出一个建议,请使用NetOffice()而不是office互操作程序集

该API与Office Interop API相同,可用于所有(当前)版本的Microsoft Office

注意-以下是一个示例:

应导入以下名称空间以使其正常工作:

using NetOffice;
using Word = NetOffice.WordApi;
using NetOffice.WordApi.Enums;
using Office = NetOffice.OfficeApi;

使用以下项目的代码库使用c#创建和保存ms word:

我可以在2003年使用更高的互操作吗?@user3165438:我不这么认为。我认为框架版本是不同的,以便向下兼容。向上确实有效。这似乎是个好建议。NetOffice和Office Interop PIAs之间的区别是什么?NetOffice是Office Com接口的包装器,它在后台使用了LateBinding/reflection,因此能够使用任何Office版本。有关更多信息,请参阅文档。我是否需要像使用Office PIA一样附加dll?如果程序集作为项目的一部分被引用,则它们应该自动包含在构建中—无需任何努力。无论如何,您都可以通过NuGet获取NetOffice程序集,因此更容易!注意-不再需要引用Office PIA程序集,因此您可以将其从项目引用中删除。请阅读此so post@PaulZahra上的公认答案,谢谢,我已经知道安装的版本。