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

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

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

这里的瓶颈很可能是Excel的转换过程:特别是在大型表格上,parsingHTML是很多工作,涉及数据types和转换的大量猜测。 可能的话,HTML甚至是如此笨拙,从服务器下载到客户端也引入了明显的延迟。

既然你不控制这两个瓶颈所涉及的代码,除了通过切换到一个更有效的格式,即原生的Excel而不是HTML来完全避免它们,你可以做的就是消除它们。

有几个.NET库可以帮助你,无论是商业还是免费的 。 谷歌search将最有可能find很多其他的select。 请注意,您的服务器端代码将变得更加重要:您将不得不设置电子表格结构/格式,并通过DataGrid循环导出每一行。 但是,最终的结果XLS文件将更加紧凑和高效,并且对于您的用户来说也比现有的HTML导出更有用(即可编辑)。