Microsoft.Office.Interop.Excel.Application-调用不同版本的Excel

时间:2019-04-11 15:39:55

标签: c# excel excel-2010 office-interop excel-2016

我有以下问题:

var oExcelApp = new Microsoft.Office.Interop.Excel.Application();

在此计算机上,这将启动Excel 2016,但是我的计算机上同时安装了Excel 2010和Excel 2016。我想改用2010年启动,并希望在安装时同时安装2010年和2016年。

根据this post,这是不可能的。但是,据我了解,您可以do this programmatically following commands

(将Excel 2010注册为默认应用程序)

"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" /regserver

但是,当我运行此命令时,它所做的只是打开excel,未观察到所需的效果。是否可以通过某种registry change来做到这一点?还是引用其他version of libraries

更新1

我尝试过this too

var oExcelApp = (Microsoft.Office.Interop.Excel.Application)Activator.CreateInstance(Type.GetTypeFromProgID("Excel.Application.14"));

似乎也不起作用,无视excel版本并运行2016,而与specified version无关。

1 个答案:

答案 0 :(得分:1)

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");