1

我想从 ASP.NET 中的网页创建一个 excel 文件,我正在使用 Microsoft.Office.Interop.Excel 库,但我无法删除在服务器端创建的文件,因为我进入了与时俱进的麻烦。我想知道是否有一种方法可以使用例如数据库的数据创建一个 Excel 文件,然后客户端可以下载该文件而不会使服务器饱和。

实际上,在服务器中创建文件后,我在 VB 中使用此代码,但它不像我想要的那样工作:

Dim p As Process = New Process()
    p.StartInfo = New ProcessStartInfo()
    p.StartInfo.UseShellExecute = True
    p.StartInfo.FileName = "taskkill.exe"
    p.StartInfo.Arguments = "/F /IM EXCEL.exe"
    p.Start()
    p.WaitForExit()
    Thread.Sleep(24)
    Response.ContentType = "application/vnd.ms-excel"
    Response.AppendHeader("Content-Disposition", "attachment; filename=Reporte.xlsx")
    Response.TransmitFile(Server.MapPath("~/Resources/" & HiddenField1.Value.ToString() & ".xlsx"))
    'Thread.Sleep(10000)
    'Dim fso, f2
    'fso = CreateObject("Scripting.FileSystemObject")
    'f2 = fso.GetFile(Server.MapPath("~/Resources/" & HiddenField1.Value.ToString() & ".xlsx"))
    'f2.Delete()
    'Thread.Sleep(24)
    Response.End()

谢谢

4

3 回答 3

1

您可能会考虑使用 Excel 以外的其他工具来创建要发送的文件。

例如,有 Carlos Aguilar Mares 的免费 Excel XML 库: http: //www.carlosag.net/tools/excelxmlwriter/

此外,SQL Server Reporting Services 等一些报告工具可以选择导出本机 Excel 文件。这是生成带有格式的 Excel 文件的一种方法。

最后,Excel 可以读取其他类型的文件,例如 CSV 和 HTML 文件。这些更容易生成,并且不需要 Excel 本身来生成。

一个很好的选项: Generating an Excel file in ASP.NET

于 2013-04-04T17:27:04.467 回答
1

Microsoft 不正式支持在服务器上自动执行 excel,我建议您找到替代方案。微软在这里有很多关于这个主题的好信息:http: //support.microsoft.com/kb/257757

所有当前版本的 Microsoft Office 都经过设计、测试和配置,可作为最终用户产品在客户端工作站上运行。他们假设一个交互式桌面和用户配置文件。它们不提供满足设计为无人值守运行的服务器端组件的需求所必需的可重入性或安全性级别。

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

如果您正在构建在服务器端上下文中运行的解决方案,您应该尝试使用已确保无人值守执行安全的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方案。如果您使用来自服务器端解决方案的 Office 应用程序,该应用程序将缺少许多成功运行所需的功能。此外,您将承担整体解决方案稳定性的风险。

他们甚至提供了如何避免使用它们的建议:

大多数服务器端自动化任务涉及文档创建或编辑。Office 2007 支持新的 Open XML 文件格式,允许开发人员在服务器端创建、编辑、读取和转换文件内容。这些文件格式使用 Microsoft .NET 3.x 框架中的 System.IO.Package.IO 命名空间来编辑 Office 文件,而无需使用 Office 客户端应用程序本身。这是处理从服务对 Office 文件的更改的推荐和支持方法。

他们还有使用 API 的教程:

http://msdn.microsoft.com/en-us/library/bb739834.aspx

http://msdn.microsoft.com/en-us/library/bb727373.aspx

于 2013-04-04T17:27:54.020 回答
0

我们使用EPPlus来生成我们的 excel 文档。

它使您可以对输出进行相当多的控制,而且速度非常快。正如约翰所说,MS 完全不支持通过网站在服务器上自动执行 Excel,他们建议您使用替代方案。

于 2013-04-04T17:31:45.940 回答