首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET中生成Excel文件

在ASP.NET中生成Excel文件
EN

Stack Overflow用户
提问于 2008-09-29 19:49:11
回答 22查看 61.4K关注 0票数 100

我即将在ASP.NET应用程序(VB.NET代码后台)中添加一个部分,它将允许用户将数据以Excel文件的形式返回给他们,我将根据数据库数据生成该文件。虽然有几种方法可以做到这一点,但每种方法都有自己的缺点。您将如何返回数据?我正在寻找一个尽可能干净和直接的东西。

EN

回答 22

Stack Overflow用户

发布于 2008-09-30 15:42:34

这是一个围绕SpreadML的免费包装器--它工作得很好。

http://www.carlosag.net/Tools/ExcelXmlWriter/

票数 7
EN

Stack Overflow用户

发布于 2008-09-30 14:47:59

根据给出的答案,以及与同事的协商,似乎最好的解决方案是生成XML文件或HTML表,并将其作为附件下推。我的同事建议的一个更改是,数据(即HTML表)可以直接写入响应对象,从而消除了写出文件的需要,这可能会因为权限问题、I/O争用而麻烦,并确保发生计划的清除。

这是一段代码..。我还没有检查过这一点,也没有提供所有被调用的代码,但我认为它很好地代表了这个想法。

代码语言:javascript
复制
    Dim uiTable As HtmlTable = GetUiTable(groupedSumData)

    Response.Clear()

    Response.ContentType = "application/vnd.ms-excel"
    Response.AddHeader("Content-Disposition", String.Format("inline; filename=OSSummery{0:ddmmssf}.xls", DateTime.Now))

    Dim writer As New System.IO.StringWriter()
    Dim htmlWriter As New HtmlTextWriter(writer)
    uiTable.RenderControl(htmlWriter)
    Response.Write(writer.ToString)

    Response.End()
票数 5
EN

Stack Overflow用户

发布于 2008-09-29 19:55:00

由于Excel能够理解HTML,因此您可以将数据作为HTML表写出到一个扩展名为.xls的临时文件中,获取该文件的FileInfo,然后使用

代码语言:javascript
复制
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fi.Name);
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.WriteFile(fi.FullName);
Response.End();

如果要避免使用临时文件,可以写入内存中的流,然后将字节写回,而不是使用WriteFile

如果省略了content-length头,您可以直接写回html,但这并不是在所有浏览器中都能正常工作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/150339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档