首页 > 解决方案 > 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,无论指定版本如何。

标签: c#excelexcel-2010office-interopexcel-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");

推荐阅读