【问题标题】:How to speed up export of .NET DataGrid to Excel?如何加快将 .NET DataGrid 导出到 Excel 的速度?
【发布时间】:2009-07-30 20:01:20
【问题描述】:

我正在使用以下函数将信息从我的 DataGrid 导出到 Excel。但是当它询问我是要保存还是导出时,它需要的时间太长了。有人知道为什么/有人有类似的经历吗?

void ExportToExcel3()
{
    Response.Clear();
    Response.AddHeader("content-disposition", "attachment;filename=FileName.xls");

    Response.Charset = "";
    Response.ContentType = "application/vnd.xls";
    System.IO.StringWriter stringWrite = new System.IO.StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
    GridView2.RenderControl(htmlWrite);
    Response.Write(stringWrite.ToString());
    Response.End();
}

【问题讨论】:

    标签: .net excel datagrid export


    【解决方案1】:

    在查看您的解决方案的性能时,重要的是要意识到您实际上并没有将 DataGrid 导出到 Excel:您实际上是将其内容编写为 HTML,然后使用“欺骗”Windows 打开该 HTML Excel。然后 Excel 会尽可能地将 HTML 表格转换为工作表。

    这里的瓶颈很可能是 Excel 的转换过程:尤其是在大型表上,解析 HTML 需要大量工作,涉及大量关于数据类型和转换的缓慢猜测。有可能,HTML 甚至过于笨拙,以至于将其从服务器下载到客户端也会引入明显的延迟。

    由于您无法控制与这些瓶颈中的任何一个相关的代码,因此除了通过切换到更有效的格式(即本机 Excel 而不是 HTML)来完全避免它们之外,您无能为力消除它们。

    有几个 .NET 库可以帮助您解决这个问题,commercialfree。谷歌搜索很可能还会找到许多其他选择。请注意,您的服务器端代码将变得更加复杂:您必须设置电子表格结构/格式,并循环通过 DataGrid 导出每一行。但是最终的结果,XLS 文件,对于它来说会更加紧凑和高效,并且对于您的用户来说也比您当前的 HTML 导出更有用(即可编辑)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      • 2015-09-27
      • 2011-02-11
      • 1970-01-01
      相关资源
      最近更新 更多