部署 Windows 表格

Deploy Windows Form

我有一个 windows 表格可以在我的机器上正常工作,我参考了 Microsoft.Interop 2007 年 Excel 程序集。某些机器将同时具有 Excel 2000 和 Excel 2007 安装,如果 Excel 2007 未设置为 Excel 的 "Default" 版本,windows 表单将抛出错误且无法工作.他们是我 "package" 我的 windows 表格允许它 运行 在安装了 2000 和 2007 的机器上无错误的方法吗?

您目前正在使用早期绑定来访问Excel。这是您在编译之前将对互操作的引用嵌入到项目中的位置。

优势

  • Excel 的版本为编译器所知
  • 更快的执行,因为我们知道这些方法存在并且它们在哪里
  • 允许我们使用智能感知来检查参数是否正确以及 return 类型是否正确

缺点

  • 仅支持 Excel
  • 的嵌入式版本

您需要看一下后期绑定。这是互操作根本不包含在项目中的地方,而是稍后通过反射绑定。您基本上权衡了上述所有优势,以便能够支持 Excel.

的多个版本

网上有很多指南都在讨论如何操作。

How to use use late binding to get excel instance?
C# : Late Binding Excel Interop Tutorial
Word Automation using Late binding - Usage of dynamic Keyword

我的两毛钱

我必须附和汉斯的评论,这是个坏主意。尝试支持 15 年前的 Excel 版本会让人头疼,我想您很快就会避免这样做。

除非你绝对想这样做,也许你可以看看像 EPPlus. Or if you only need to read the sheet, do it some alternate way like ODBC 这样的第三方库并完全避免这种情况。