2009-12-18 11 views
2

我們有一個32位的.NET應用程序,它使用32位版本的DSOFile.dll 2.1從Office文檔讀取公共屬性。這適用於32位版本的Windows,適用於Office 2003和Office 2007文檔。我們現在正在檢查我們的應用程序在64位環境中的行爲,特別是在64位Windows Server 2008中。無法讀取在x64系統上使用x86 dsofile.dll的Office 2007 doc道具

在此64位環境中,DSOFile.dll可以成功讀取Office 2003文檔中的屬性(例如。DOC ),但對於Office 2007文檔(例如.DOCX),只會爲所有屬性返回空字符串,否則會生成錯誤。

這裏是我的意見:

環境:乾淨的安裝
讀取DOC道具:OK
讀取DOCX道具:空值返回

環境:安裝Office 2007兼容包
讀取DOC道具:好
閱讀DOCX道具:空值返回

環境:Offi CE 2007兼容包SP1
讀取DOC道具:OK
讀取DOCX道具:空的返回值中

環境:安裝Office 2007
讀取DOC道具:OK
讀取DOCX道具:錯誤消息=「文檔不是OLE文件「

在64位系統上,我使用位於%SystemRoot%\ Syswow64中的regsvr32的副本來註冊dsofile.dll。

任何意見將不勝感激。

+0

作爲簡言之,你並不需要擔心的是哪個版本的regsvr32.exe的至少在使用Windows 7時是如此。如果傳遞32位文件,則64位版本將調用32位版本,反之亦然。 (我不確定Vista是否做了同樣的事情,但Win 7確實如此)非常方便。 –

回答

0

您可以將應用程序編譯爲x86而不是AnyCPU,然後它將在x64 Windows上正常工作。

另一種可能的方法是使用Open XML SDK 2.0 for Microsoft Office。看看它是否支持x64應用程序。

http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

+0

該應用程序已經針對x86而不是AnyCPU,這就是爲什麼它可以使用x86版本的dsofile來讀取DOC屬性(只是沒有打開XML文檔屬性)。 我會看看Open XML SDK,謝謝。 – user234332

2

您可以找到DSOFIle源代碼(對谷歌看看),並編譯爲64位,或嘗試此鏈接,有人說,他們已經做到了: http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-79KRU6

我如果你需要它也可以在這裏得到一個x64版本我可以上傳它。

它可能不直接關係到你的問題,但如果你想嘗試它,我已經使用x86和x64

相關問題