2011-05-26 56 views
0

規劃在我的項目中使用interop,因爲以前的方法每次在excel中打開文件時都會給出彈出式警告,說明版本與文件格式不同。使用Interop Excel將gridview導出爲ex​​cel

問題是,哪個對象庫版本必須添加到我的項目的引用?根據MS網站:

http://msdn.microsoft.com/en-us/library/ms173186(v=vs.80).aspx 

Depending on the version of Office installed the Excel Assembly may be called Excel 10 Object Library or Excel 11 Object Library.

這是否意味着互操作只能與Excel的一個版本可以用嗎?如果我使用這個特定版本的對象庫,那麼我只能用它與Excel 2003相提並論。那是什麼意思?

+0

「因爲以前的方法給我一個彈出式警告,每次在Excel中打開該文件說,該版本是不同於文件格式」這是因爲你的Excel文件有錯誤的擴展名'.xlsx'而不是'.xls'或相反亦然。 – 2011-05-26 03:35:06

+0

@petr不,我將它保存爲.xls,但警告仍然存在。 – 2011-05-26 03:42:26

+0

我想你會得到警告,因爲該文件不是真正的Excel格式(可能是csv或html)......我曾經用HTML來做。 – Mel 2011-05-26 05:57:50

回答

1

您引用的語句僅表示您要引用的程序集取決於您在運行程序的框中安裝了哪個版本的excel。

因此,如果您的Excel中包含Excel 2007,那麼您應該引用Excel12庫。但是,這並不表示客戶應該擁有相同的版本。在Excel 2007中,您可以將文件保存爲xml格式(xlsx),並且對於使用excel 2007+和具有特定Compatibility Pack的舊版本的客戶端,這些文件將可讀。使用相同的庫,您還可以將文件保存爲較舊的xls格式以實現兼容性,我認爲可以打開Excel 97(某些功能可能被禁用)。

+0

如果Web應用程序將部署在Web服務器/ Intranet網絡中,該怎麼辦?它也必須具有優秀的特點嗎?或互操作性尋找在客戶端(誰正在查看該網站)筆記本電腦excel? – 2011-05-26 05:19:54

+0

實際上沒有,它不會那樣工作。你必須在你的服務器上安裝excel。使用excel interop創建一個excel文件,然後通過電線將文件發送給客戶端。 – Mel 2011-05-26 05:56:33

+0

我建議你在你的服務器(或者數據庫)的某個地方生成並保存你的excel文件,而不是爲每個用戶重新生成excel文件。或者,如果你使用它來進行重放,使用類似SSIS或報告服務的東西......並且讓他們爲你生成excel文件。 – Mel 2011-05-26 05:59:43