c# - Microsoft.Office.Interop.Excel.Application - 调用不同版本的 Excel
问题描述
我有以下问题:
var oExcelApp = new Microsoft.Office.Interop.Excel.Application();
在这台机器上,这会启动 Excel 2016,但是我的机器上同时安装了 Excel 2010 和 Excel 2016。我想改为启动 2010,并且我想在我这样做时将 2010 和 2016 都安装在我的机器上。
根据这篇文章,这是不可能的。但是,我的理解是您可以使用以下命令以编程方式执行此操作:
(将 Excel 2010 注册为默认应用程序)
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" /regserver
但是,当我运行此命令时,它所做的只是打开 excel,没有观察到预期的效果。有没有办法做到这一点,也许通过某种注册表更改?或者引用不同版本的库?
更新 1
我也试过这个:
var oExcelApp = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application.14"));
似乎也不起作用,忽略 excel 版本并运行 2016,无论指定版本如何。
解决方案
这似乎工作得很好。不确定“_Application”和“Application”之间的区别是什么,但根据评论“Application”是首选:
string pathToTheVersionOfExcel "...";
int amountOfTimeToWaitForFailure = 5000;
Process process = new Process();
process.StartInfo.FileName = pathToTheVersionOfExcel;
process.Start();
Thread.Sleep(amountOfTimeToWaitForFailure);
oExcelApp = (Application)Marshal.GetActiveObject("Excel.Application");
推荐阅读
- c# - 将两种方法合二为一(泛型?)
- c++ - 使用加载项的 Office 菜单控制
- haskell - 使用 haskell 摇动构建工具。使用本地静态 c 库
- java - 在 JSoup 中合并相同的元素
- mysql - 我该如何解决这个 eloquant 显示数据的问题?
- python - 无法将 tkinter 滑块正确绑定到函数
- python - 尝试使用 Heroku 打开 Flask 应用程序时出现 R10/H10 应用程序错误
- database - Olist 电子商务 cvs 数据集的维度数据建模
- javascript - 数据网格过滤器中的完全匹配
- python - 如何在df中创建一个新列,用pandas累积另一列的值?