将ASP.NET与Excel文件一起使用

将ASP.NET与Excel文件一起使用,asp.net,vb.net,export-to-excel,Asp.net,Vb.net,Export To Excel,我想从ASP.NET中的网页创建excel文件,我使用的是Microsoft.Office.Interop.excel库,但无法删除服务器端创建的文件,因为我遇到了时间问题。我想知道是否有一种方法可以创建一个包含数据库数据的Excel文件,然后客户端可以下载该文件而不会使服务器饱和 实际上,在服务器中创建文件后,我在VB中使用了此代码,但它的工作方式与我想要的不同: Dim p As Process = New Process() p.StartInfo = New ProcessSta

我想从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()

谢谢

< p>您可以考虑使用Excel以外的其他东西来创建要发送的文件。

例如,Carlos Aguilar Mares的免费Excel XML库:

此外,某些报告工具(如SQL Server reporting Services)还可以选择导出本机Excel文件。这是生成Excel文件的一种方法,包括格式设置

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


一个很好的选项演练:

Microsoft不正式支持在服务器上自动运行excel,我建议您找到一个替代方案。Microsoft在这里有很多关于此主题的好信息:

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

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

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

他们甚至建议如何避免使用它们:

大多数服务器端自动化任务都涉及文档创建或 编辑。Office2007支持新的开放式XML文件格式,使 开发人员在计算机上创建、编辑、读取和转换文件内容 服务器端。这些文件格式使用System.IO.Package.IO命名空间 在Microsoft.NET 3.x Framework中,不使用 Office客户端应用程序本身。这是推荐和推荐的方法 处理来自服务的Office文件更改的支持方法

他们还提供了有关使用API的教程:

我们用来生成excel文档


它让你对输出有很大的控制,而且速度非常快。正如John所说,MS完全不支持通过网站在服务器上自动运行Excel,他们建议您使用其他方法。

在服务器上运行作业(例如,每午夜一次)删除一天或更长时间的文件可能更容易。