如何从asp.net mvc更新和保存excel文件?

Sea*_*anX 0 asp.net asp.net-mvc excel

我有一个现有的delphi桌面应用程序,我正在重写为asp.net mvc应用程序.

桌面应用程序有大约120个excel报告.这些报告通常包含很少的命名单元格,其中包含设置信息(客户端ID等),一些数据查询返回到sql server数据和几个关键表.

要在桌面应用程序上生成报告,我使用ole自动化

  1. 打开报告
  2. 使用正确的数据填充命名单元格
  3. 使用ActiveWorkbook.RefreshAll()更新查询和数据透视表
  4. 保存报告

我想在我的网络应用程序中这样做.但是,在服务器上不支持ole自动化,并且不起作用.我见过的所有excel组件似乎都不支持刷新查询和/或关键表.

目前,我最好的选择似乎是使用某些报表生成器重写报表并将这些报表导出到Excel.但是,生成的文件需要更长的时间来编写,功能更少(没有关键表),当然还有120个.

有关如何使用现有报告的任何建议?

更新

Excel安装在服务器上,与开发机器上的版本相同.

我的mvc代码是这样的:

objApp = new Application();
objBooks = objApp.Workbooks;
objBook = objBooks.Open(FileName);
objApp.DisplayAlerts = false;  // don't warn if pivot table changed
objApp.ActiveWorkbook.RefreshAll();
objBook.SaveAs(newFileName);
Run Code Online (Sandbox Code Playgroud)

在开发机器上它工作正常,但在服务器上它在第一行失败

objApp = new Application();
Run Code Online (Sandbox Code Playgroud)

与System.UnauthorizedAccessException的:检索COM类工厂CLSID组件{00024500-0000-0000-C000-000000000046}失败,原因是以下错误:80070005次访问被拒绝.(来自HRESULT的异常:0x80070005(E_ACCESSDENIED)).

Tod*_*ain 5

这是一个非常常见的错误,但需要在服务器上设置许多项目以供ASP.NET使用.通常,此线程上的建议就足够了:System.UnauthorizedAccessException:检索Word Interop的COM类工厂失败,错误为80070005.

它们似乎没有得到妥善和彻底的处理.延迟绑定也可能是问题的一部分.