在C#中使用Microsoft.Office.Interop.Excel创建新的Excel.Workbook时报告ININI.xls消息

时间:2017-04-04 08:04:52

标签: c# excel visual-studio-2010 office-interop

我在c#中遇到了Microsoft.Office.Interop.Excel的问题。

当我创建一个新的Excel.Workbook时:

<my-app>
  <!-- the loader -->
  <div id="loader-container"></div>
</my-app>

显示来自excel的以下消息:

  

无法找到ReportINI表。请确保ReportINI.xls位于-office-程序的-xlstart-子目录中。

我已经尝试过禁用excel消息或禁用Excel工作表中的宏,但我找不到解决方案...

聚苯乙烯。我使用Visual Studio 2010和Office 2007.当然,我是C#,Visual Studio和Microsoft环境的新手。

有人知道我该如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

原因可能是您的excel文件宏。手动打开excel文件并释放宏时,是否会出现相同的错误?

我建议在项目中使用c#代码禁用宏。 试试这个:

Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

//On here we disabled all macros
excelApp.AutomationSecurity = Microsoft.Office.Core.MsoAutomationSecurity.msoAutomationSecurityForceDisable;

答案 1 :(得分:0)

看到这种情况的原因是,您正在打开一个Calypso报告,该报告取决于ReportINI.xls文件中的帮助程序功能。如果您尝试使用Calypso自动报告生成器,则需要在打开报告之前先找到该文件并先将其打开。

如果您不想使用Calypso自动报告生成器功能,则应从要修改的Calypso报告文件中剥离所有VBA代码。它具有指向ReportINI.xls文件打开的一些功能。

或者只是抑制在open上运行的宏,如下所示:

Excel.Application xlApp = new Excel.Application();
xlApp.EnableEvents = False
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"D:\...\...");
xlApp.EnableEvents = True

(在打开期间禁用事件将取消Workbook_Open事件)