1

Microsoft.Office.Interop.Excel在 C# 中使用创建自定义.xlsx文件。

在这样做时,我创建了一个Workbook对象。由于复杂的 SQL 查询的性质来获取数据、处理数据并通过 Interop 应用自定义样式和格式化代码非常冗长。更不用说避免 Interop 本身的内存泄漏以及确保 Excel 在运行后正确关闭的非常谨慎的过程。

我最初将它作为控制台应用程序进行测试,并使其工作令我满意。SaveAs它所做的是使用该成员将最终结果保存到文件系统中。

但是,我的下一个目标是将输出重定向为输出流,asp.net类似于此处的这个问题。我已经进行了一些初步研究,但似乎找不到不涉及首先将工作簿保存到服务器文件系统的方法。如果多个用户同时访问等,这可能会导致冲突。

所以我的问题是,有没有一种简单的方法来设置 asp.netContentType.xlsx流出Workbook对象而不将其保存到文件系统?如果没有,有没有办法asp.net可以自动保存临时文件而不会发生冲突,提供临时文件,然后在提供临时文件后删除它?

4

1 回答 1

1

我同意您应该避免使用 Excel Interop 服务器端的评论,并且我使用的第三方库(EPPlus、Aspose)都支持流式输出。但是,如果您想保存临时文件而不发生冲突,您可以使用Path.GetTempFileName

如果您的 ASP.NET 应用程序在没有配置文件的帐户下运行,您可能需要授予它%WINDIR%\Temp对它使用的任何临时目录的写入权限。

于 2012-06-14T15:04:35.107 回答