C#使用Microsoft.Office.Interop.Excel打开Excel默认加载插件问题咨询
问题原因
通过COM Interop创建的Excel.Application实例默认启用了自动化安全限制,会禁用所有非必要的插件加载,避免自动化执行流程被插件干扰,这是Office的默认安全设计。
解决方案
在实例化Excel对象后、设置Visible属性前,修改自动化安全级别并启用所有已注册的默认插件即可,无需手动指定xll文件路径,修改后的代码如下:
using Excel = Microsoft.Office.Interop.Excel; using Microsoft.Office.Core; Excel.Application ExcelApplication = new Excel.Application(); // 调整自动化安全级别,允许加载默认插件 ExcelApplication.AutomationSecurity = MsoAutomationSecurity.msoAutomationSecurityLow; // 遍历所有Excel已注册的默认插件,启用加载 foreach (Excel.AddIn addIn in ExcelApplication.AddIns) { // 仅启用原本默认勾选的插件,和手动打开Excel的加载逻辑一致 if (addIn.Installed == false) { try { addIn.Installed = true; } catch { // 忽略个别异常插件的加载错误,避免程序崩溃 } } } ExcelApplication.Visible = true;
注意事项
- 配置顺序不可调换:必须在设置Visible属性之前完成安全级别修改和插件启用操作,否则配置不会生效
- 插件列表完全和手动打开Excel的加载列表一致,不需要额外管理插件路径、版本等信息
- 如果部分插件加载失败,检查程序运行身份是否和手动打开Excel的用户一致,确保对插件目录有访问权限
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

