Microsoft.Office.Interop.Excel.Application - 调用 Excel 的不同版本
Microsoft.Office.Interop.Excel.Application - Invokeing Different Versions of Excel
我有以下问题:
var oExcelApp = new Microsoft.Office.Interop.Excel.Application();
在这台机器上,它启动 Excel 2016,但是我的机器上同时安装了 Excel 2010 和 Excel 2016。我想改为从 2010 年开始,并且我希望在执行此操作时将 2010 年和 2016 年都安装在我的机器上。
根据this post, it's not possible. However, my understanding is that you can do this programmatically using the following commands:
(注册Excel 2010为默认应用)
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" /regserver
然而当我运行这个命令时,它所做的只是打开excel,没有观察到预期的效果。有没有办法做到这一点,也许用某种 registry change? Or referencing a different version of libraries?
更新 1
我试过了this too:
var oExcelApp = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application.14"));
似乎也不起作用,忽略 excel 版本和 运行s 2016,不管 specified version.
This 似乎工作得很好。不确定“_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");
我有以下问题:
var oExcelApp = new Microsoft.Office.Interop.Excel.Application();
在这台机器上,它启动 Excel 2016,但是我的机器上同时安装了 Excel 2010 和 Excel 2016。我想改为从 2010 年开始,并且我希望在执行此操作时将 2010 年和 2016 年都安装在我的机器上。
根据this post, it's not possible. However, my understanding is that you can do this programmatically using the following commands:
(注册Excel 2010为默认应用)
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" /regserver
然而当我运行这个命令时,它所做的只是打开excel,没有观察到预期的效果。有没有办法做到这一点,也许用某种 registry change? Or referencing a different version of libraries?
更新 1
我试过了this too:
var oExcelApp = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application.14"));
似乎也不起作用,忽略 excel 版本和 运行s 2016,不管 specified version.
This 似乎工作得很好。不确定“_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");