如何使用Interop加载Excel Addin

use*_*149 6 c# excel interop

我有一个AddIn,我想从C#winforms应用程序通过Excel interop调用.

我无法加载插件等,除非我每次卸载并进行树脂安装(这很可能与Excel没有加载插件时使用interop -btw,无法让他们的示例在C#中工作).不幸的是,这对用户来说很慢并且很烦人,所以我需要简化它.

我想有一个Excel实例,但加载已安装的插件而不强制此安装/重新安装问题.

我搜索和搜索,但我在谷歌上找到的所有内容都提供了安装/重新安装的解决方案.还有其他方法吗?加载项已安装,我只想要excel加载它.

这就是我现在正在做的事情(取自google'd建议):

// loop over the add-ins and if you find it uninstall it.
foreach (AddIn addIn in excel.AddIns)
    if (addIn.Name.Contains("My Addin"))
        addin.Installed = false;

    // install the addin
    var addin = excel.AddIns.Add("my_addin.xll", false);
        addin.Installed = true;
Run Code Online (Sandbox Code Playgroud)

use*_*149 7

过了一会儿,我发现答案隐藏在MS帮助的陌生地方:和这篇博文.

这不是你需要的所有信息.注意事项:您必须至少打开一个工作簿或Excel barfs.这里有一些粗鲁的代码来开始:

var excel = new Application();
var workbook = excel.workbooks.Add(Type.Missing);
excel.RegisterXLL(pathToXll);
excel.ShowExcel();
Run Code Online (Sandbox Code Playgroud)

如果你想要你可以关闭临时工作簿(如果你运行了一些宏等)并记得通过大量调用Marshal.ReleaseComObject来整理所有内容!