如何加快.NET DataGrid到Excel的导出?

时间:2009-07-30 20:01:21

标签: .net excel datagrid export

我正在使用下面的函数将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();
}

1 个答案:

答案 0 :(得分:4)

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

这里的瓶颈很可能是Excel的转换过程:特别是在大型表上,解析HTML需要做很多工作,需要对数据类型和转换进行大量缓慢的猜测。可能,HTML甚至如此笨拙,以至于从服务器下载到客户端也会引起明显的延迟。

由于您不控制与这些瓶颈相关的代码,除了通过切换到更高效的格式(即原生Excel而不是HTML)完全避免它们之外,您无法做到消除它们。 / p>

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