我们创建了一个使用Office 2007(Excel 2007)从Excel工作表读取数据的应用程序。然而。我注意到,当我想在安装了Office 2003的系统上部署应用程序时,它会崩溃,因为此版本的办公室需要引用其他PIA(和其他dll)。
我是否需要编译不同版本的应用程序才能支持不同版本的Office,或者针对此问题是否有更优雅的解决方案?
我使用Visual Studio 2010(C#)和.Net 4.0平台。
答案 0 :(得分:21)
当您使用.NET 4时,您可以使用“嵌入式”PIA(又名“No PIA”)。更改Office引用上的选项,以便“嵌入互操作类型”为True。
只要您使用部署的计算机上支持的Office功能,您就可以了。
这也意味着:
- 您无需担心PIA本身不会出现在目标计算机上
- 现在,在代码中使用VARIANT
表示原始COM接口中dynamic
类型的任何方法或属性,这可以使您的生活更简单
答案 1 :(得分:1)
根据您是否有任何其他要求(您说从Excel读取数据),您可以使用OLEDB驱动程序连接到Excel文件并以SQL方式查询。
实施例: http://codehill.com/2009/01/reading-excel-2003-and-2007-files-using-oledb/
答案 2 :(得分:0)
您可以为多个版本的办公室引用PIA,并在运行时找出路由您的电话。