我們創建了一個使用Office 2007(Excel 2007)從Excel工作表讀取數據的應用程序。然而。我注意到,當我想在安裝了Office 2003的系統上部署應用程序時,它會崩潰,因爲需要爲此版本的Office引用其他PIA(和其他dll)。使用Office自動化支持不同的Office版本
我是否需要編譯我的應用程序的不同版本才能支持不同版本的Office,或者是否存在針對此問題的更優雅的解決方案?
我使用Visual Studio 2010(C#)和.Net 4.0平臺。
我們創建了一個使用Office 2007(Excel 2007)從Excel工作表讀取數據的應用程序。然而。我注意到,當我想在安裝了Office 2003的系統上部署應用程序時,它會崩潰,因爲需要爲此版本的Office引用其他PIA(和其他dll)。使用Office自動化支持不同的Office版本
我是否需要編譯我的應用程序的不同版本才能支持不同版本的Office,或者是否存在針對此問題的更優雅的解決方案?
我使用Visual Studio 2010(C#)和.Net 4.0平臺。
當您使用.NET 4時,您可以使用「嵌入式」PIA(又名「無PIA」)。更改Office引用上的選項,以便「嵌入Interop類型」爲True。
只要您只使用您部署的計算機上支持的Office功能,您應該沒問題。
這也意味着: - 您不必擔心PIA本身不存在在目標機器上 - 任何方法或性能,這是在原來的COM接口VARIANT
類型的使用,現在代表dynamic
在你的代碼中,這可以使你的生活更簡單
您可以參考PIA的多個版本的辦公室,並找出運行時路由您的呼叫。
這就是你不應該做的:http://blogs.msdn.com/b/andreww/archive/2007/06/15/can-you-build-one -add-in-for-multiple-versions-of-office.aspx – Andy
這實際上是一個**好的主意。我也想這樣做,因爲在我的公司我們有安裝了不同Office版本的系統。我希望我的應用程序支持任何**版本。 – Bitterblue
根據你是否有其他要求(你說從excel中讀取數據),你可以使用OLEDB驅動程序連接到excel文件並在SQL中查詢它方式。
例子: http://codehill.com/2009/01/reading-excel-2003-and-2007-files-using-oledb/
這會讓我2年前的生活變得容易得多。在vs05中編寫vsto插件是一件麻煩事。 – asawyer
這解決了我的問題。非常感謝你。 – Chris