C# Microsoft Office Interop Excel ExportAsFixedFormat-速度非常慢,未加载图像

C# Microsoft Office Interop Excel ExportAsFixedFormat-速度非常慢,未加载图像,c#,asp.net,excel,interop,ms-office,C#,Asp.net,Excel,Interop,Ms Office,我想将生成的.xlsx电子表格导出为PDF格式。 我有两个问题: 对于这两种方法,导出文档的速度都非常慢-SaveAs()ExportAsFixedFormat() ExportAsFixedFormat不导出图像 我正在使用IIS在ASP.NET服务器中运行代码 已配置权限,如此处所示: 此存储库中的代码可以正常工作: 我还使用EPPlus生成.xlsx文件 守则: Microsoft.Office.Interop.Excel.Application app=new Microsoft.O

我想将生成的.xlsx电子表格导出为PDF格式。 我有两个问题:

  • 对于这两种方法,导出文档的速度都非常慢-SaveAs()ExportAsFixedFormat()
  • ExportAsFixedFormat不导出图像
我正在使用IIS在ASP.NET服务器中运行代码

已配置权限,如此处所示:

此存储库中的代码可以正常工作:

我还使用EPPlus生成.xlsx文件

守则:

Microsoft.Office.Interop.Excel.Application app=new Microsoft.Office.Interop.Excel.Application();
Microsoft.Office.Interop.Excel.Workbooks excelWorkbooks=app.Workbooks;
Microsoft.Office.Interop.Excel.Workbook wkb=excelWorkbooks.Open(this.tempExcelFilePath);
foreach(wkb.Sheets中的Microsoft.Office.Interop.Excel.Worksheet工作表)
{
sheet.SaveAs(this.tempDffilePath);//根据需要正确保存PDF,但它无法完成任务(大约等待3分钟)
sheet.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF,this.tempDffilePath);//导出没有图像的PDF(当前无法显示图像),速度也很慢
}
wkb.SaveAs(this.temppdfilepath);//等待时间太长,无法完成
wkb.ExportAsFixedFormat(Microsoft.Office.Interop.Excel.XlFixedFormatType.xlTypePDF,“C:\\Users\\user222\\Desktop\\Sample.pdf”);//等待时间太长,无法完成任务
//关闭windows中的EXCEL.exe进程。如果未关闭,则会导致错误。
wkb.Close(保存更改:false);
Excel工作簿。关闭();
app.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(wkb);
System.Runtime.InteropServices.Marshal.ReleaseComObject(Excel工作簿);
System.Runtime.InteropServices.Marshal.ReleaseComObject(应用程序);
你知道为什么这么慢吗?如何解决我的问题

今天开始缓慢加载。在此之前,它没有加载速度慢的问题

我正在使用IIS在ASP.NET服务器中运行代码

Microsoft目前不建议也不支持从任何无人参与、非交互式客户端应用程序或组件(包括ASP、ASP.NET、DCOM和NT服务)自动化Microsoft Office应用程序,因为在该环境中运行Office时,Office可能会表现出不稳定的行为和/或死锁

如果您正在构建一个在服务器端上下文中运行的解决方案,那么您应该尝试使用安全的组件来无人值守地执行。或者,您应该尝试找到至少允许部分代码在客户端运行的替代方案。如果使用服务器端解决方案中的Office应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将面临整体解决方案稳定性方面的风险。在文章中阅读更多关于这方面的内容


我建议改用OpenXMLSDK,请参阅。您也可以考虑使用为服务器端执行而设计的第三方组件。 互操作既不是设计的,也不建议在服务器应用程序中使用。如果没有孤立的EXCEL.EXE,请签入TaskManager。调试时,在到达“新的Microsoft.Office.Interop.EXCEL.Application();”之前行,任务管理器中没有EXCEL.EXE进程。我想它应该是EXCEL或源文件,因为它在今天之前就可以工作了。尝试重新启动服务器,看看是否会有什么不同。已尝试。我仍然在本地主机、重新启动的计算机、IIS等上。我仍然在这里出现故障,因此我已经开始逐行使用
iTextSharp
。感谢回复。我同意你的看法。但对我来说,在Office中使用OpenXMLSDK2.5并不复杂。我将使用
iTextSharp
作为替代方案。