如何在asp.net输出流上编写Microsoft.Office.Interop.Excel.Application对象

时间:2012-06-14 14:02:11

标签: c# asp.net iis-6 excel-2007 excel-interop

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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