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

如何加速.NET DataGrid到Excel的导出?,.net,excel,datagrid,export,.net,Excel,Datagrid,Export,我正在使用以下函数将信息从我的DataGrid导出到Excel。但当它问我是想保存还是导出时,它花费的时间太长了。有人知道为什么有类似的经历吗 void ExportToExcel3() { Response.Clear(); Response.AddHeader("content-disposition", "attachment;filename=FileName.xls"); Response.Charset = ""; Response.ContentT

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

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

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

由于您无法控制这两个瓶颈所涉及的代码,因此除了通过切换到更高效的格式(即本机Excel而不是HTML)来完全避免这些瓶颈之外,您无法做很多事情来消除它们

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