簡體   English   中英

如何確定客戶端計算機上 Microsoft.Office.Interop.Excel 的版本?

[英]How can I determine the version of Microsoft.Office.Interop.Excel on a client computer?

我有一個需要使用 Microsoft.Office.Interop.Excel 程序集的應用程序(沒什么瘋狂的,只是簡單地寫入工作表)。
在編譯時,我使用的是 Microsoft.Office.Interop.Excel 15.0。 我安裝了 Office 2013,一切都按預期工作。

但這與客戶是否可以使用它無關。

如何以編程方式確定用戶已安裝的 Interop.Excel 版本? 一旦我知道他們有什么版本,我如何才能在運行時加載這些程序集以訪問互操作對象? 例如,如果用戶安裝了 Interop.Excel 14.0,這是否意味着他們肯定也安裝了 Excel? 我應該如何檢查安裝了哪個版本的 Excel?

我知道用戶需要安裝 Office 才能使用 Interop.Excel 對象,這是否意味着我需要同時檢查 Office 版本和 Interop 程序集版本?

我們計划支持 Excel 2007、2010 和 2013。

簡而言之 - 我如何在這里涵蓋我的所有基地?

有很多關於 Interop.Excel 的問題,但沒有任何東西讓我清楚:

a) 我需要在客戶端計算機上檢查什么

b)我如何通過反射進行這些檢查(避免注冊表查找)

謝謝。

例如,如果用戶安裝了 Interop.Excel 14.0,這是否意味着他們肯定也安裝了 Excel?

不,互操作用於將托管編程語言的調用編組到非托管應用程序。

我應該如何檢查安裝了哪個版本的 Excel?

通常,Windows 注冊表用於檢測已安裝的 Office 版本。 請注意,PC 上可以安裝多個 Office 版本。 您也可以嘗試以編程方式運行 Office 應用程序,然后在運行時檢查Version屬性。 有關詳細信息,請參閱如何從 Microsoft Visual C#.NET 自動化 Microsoft Excel

我們計划支持 Excel 2007、2010 和 2013。簡而言之——我如何在此處涵蓋所有基礎?

使用與您需要支持的最低 Office 版本相對應的最舊互操作。 因此,您將確保使用在所有 Office 版本中都可用的方法和屬性。 或者我將互操作程序集(類型)嵌入到您的應用程序中。 當您面向 .net 4.0 及更高版本時,此功能可用。

這里有更簡單的解決方案。 在我的情況下,由於 Excel Interop 版本,我需要分離我的代碼流。

Microsoft.Office.Interop.Excel.Application oXL = new Microsoft.Office.Interop.Excel.Application();
if(oXL.Version.Equals("15.0"))
{
   //bla bla..
}
else if(oXL.Version.Equals("14.0")||oXL.Version.Equals("12.0") || oXL.Version.Equals("11.0"))
{
   //bla bla..
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM