2009-08-07 43 views
3

我開發了一個將數據導入Microsoft Excel的應用程序。使用VS2005 + .NET 2.0和Microsoft Office 2007.NET Office interop使用版本獨立的辦公室

AM是安裝在我的機器(辦公室12)上。

的編譯的應用程序工作正常,如果我在我的機器上運行它,但當我將應用程序部署到其他機器說,那些使用較低版本(Office 2000的),我得到的錯誤:

無法加載文件或大會的Microsoft.Office.Interop.Excel,版本12.0.0.0

我怎麼會那麼讓我的應用程序正確執行,無論安裝在計算機上的Office(Excel)中的?

謝謝。

一些更新: 我把引用的兩個DLL,即Microsoft.Office.Interop.Excel.dll(版本12.0.0.0)和Office.dll(版本12.0.0.0)在我的bin文件夾。我已經將此引用的屬性設置爲Copy Local = True,並且當我編譯我的應用程序時,這些DLL被複制到debug/release文件夾中。

現在,當我嘗試運行應用程序時,我已經下了錯誤的: 「無法加載文件或程序的Microsoft.Office.Interop.Excel,版本12.0.0.0」

但另一個錯誤來到這是: System.AccessViolationException:試圖讀取或寫入受保護的內存。這通常表明其他內存已損壞。 (對象文件名,對象文件格式,對象密碼,對象WriteResPassword,對象ReadOnlyRecommended,對象CreateBackup,XlSaveAsAccessMode AccessMode,對象ConflictResolution,對象AddToMru,對象TextCodepage,對象TextVisualLayout,對象本地)

所以,實際上,我怎麼創造條件,能夠在數據表中的數據導出安裝到Excel不管Office版本的應用程序?

謝謝。

回答

2

MS Office Wrapper for .NET - 它是獨立於Office的版本包裝(testeod微軟Office 97 - 2007年的作品)。

+0

我試過用你的Office Wrapper,它在Office 2007中工作正常。我在Office 2000中沒有測試過。 我遇到的一個問題是應用程序創建過程似乎駐留在內存中。即使我調用了MSExcel.Application.CreateApplication.Quit(),仍然會收到一條消息,提示您「您是否想要將更改保存到Book1?」當我關閉/註銷我的機器時。 任何進一步的建議高度讚賞。謝謝。 – Batuta 2009-08-14 01:03:17

+0

設置屬性「Application.Interactive = false」。那麼應該禁止所有的用戶輸入。 有關物業的更多信息:http://msdn.microsoft.com/en-us/library/bb177670.aspx – TcKs 2009-08-14 08:54:19

0

這是因爲它特別尋找該組件的版本12。

在您的csproj中,找到引用文件夾中對該程序集的引用。進入該引用的屬性,並將特定版本設置爲False。

+0

我已經設置了特定的版本= False,但仍然無法在Office版本較低的機器上運行應用程序。 – Batuta 2009-08-07 01:50:27

0

你將有較少的問題 - 但你仍然可能有問題 - 如果你建立對Excel 2003中,而不是Excel 2007中

是.NET的Excel兼容庫,你可以用你的應用程序部署,而無需擔心無論您的用戶是否擁有特定版本的Excel(即使他們沒有任何版本的Excel,它也能正常工作)。

您可以使用C#和VB源代碼here查看示例,並下載免費試用版here

聲明:我自己的SpreadsheetGear LLC

1

在過去,我發現如果你確定所有的Office引用(即不是系統引用)被設置爲複製本地,它將工作。

我一般用Office 2003 PIA編譯(你可以從微軟的網站上得到),輸出已經與Office 07一起工作了。我很久沒試過Office 2000或XP,所以不確定輸出是否可以工作。