2014-04-23 290 views
2

我想根據Word安裝版本保存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. 

任何想法?

+0

對此接受答案的看了這麼張貼http://stackoverflow.com/questions/3266675/how-to-detect-installed-version-of-ms-office –

+0

@PaulZahra,謝謝,我已經知道了什麼是安裝的版本。 – user3165438

回答

1

不確定不同字版本之間的API是否完全相同。

如果我可以提出建議 - 使用NetOffice(see link)而不是Office Interop程序集。

該API與Office Interop API相同,並且可以與所有(當前)版本的Microsoft Office一起使用。

NB - 這裏有一個例子:http://netoffice.codeplex.com/wikipage?title=Word_Example01

您應導入下面的命名空間來得到它的工作:

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

似乎是一個很好的建議。 NetOffice和Office Interop PIA有什麼區別? – user3165438

+0

NetOffice是Office Com Interface的一個包裝,雖然它使用LateBinding /反射,因此可以使用任何Office版本。請參閱文檔以獲取更多信息 –

+0

我是否像附帶Office PIA一樣附加了dll? – user3165438

0

這是因爲您使用了interop程序集的錯誤版本。您不能引用僅存在於框架的更高版本中的值。

您應該使用更高版本的互操作版本,或者創建兩個單獨的項目,一個用於舊版本的互操作程序集,一個用於更高版本。

+0

我可以在2003年使用更高的互操作性嗎? – user3165438

+0

@ user3165438:我不這麼認爲。我認爲框架版本是不同的向下兼容。向上工作。 –