我在C#中使用Microsoft.Office.Interop.Excel
来创建自定义.xlsx
文件。
这样做我创建了一个Workbook
对象。由于复杂SQL查询的本质是抓取数据,处理数据并通过Interop应用自定义样式和格式化代码非常冗长。更不用说从Interop本身避免内存泄漏的非常谨慎的过程,并确保Excel在运行后实际正常关闭。
我最初是将它作为控制台应用程序进行测试,并让它让我满意。它的作用是使用SaveAs
成员将最终结果保存到文件系统。
但是,我的下一个目标是将输出重定向为asp.net
的输出流,类似于此question here。我做了一些基本的研究,我似乎找不到一种方法,不涉及首先将工作簿保存到服务器的文件系统。如果多个用户同时访问等,这可能会导致冲突。
所以我的问题是,是否有一种简单的方法可以为ContentType
设置asp.net .xlsx
并流出Workbook
对象而不将其保存到文件系统中?如果没有,是否有asp.net
方式可以自动保存临时文件而不会发生冲突,提供临时文件,然后在提供临时文件后将其删除?
答案 0 :(得分:1)
我同意您应避免使用Excel Interop服务器端的注释,并且我使用的第三方库(EPPlus,Aspose)都支持流式输出。但是,如果要保存临时文件而不发生冲突,可以使用Path.GetTempFileName。
如果您的ASP.NET应用程序在没有配置文件的帐户下运行,您可能需要授予它对%WINDIR%\Temp
或其使用的任何临时目录的写访问权。