日期:2014-05-19  浏览次数:20499 次

DataGrid查询结果导出到Excel如果数据条数过多就会出错求解!!!!
问题是这样的:
                      按照部门查询(查询出来的条数相对少)后点按钮就能顺利导出到Excel.
但是一按照整个公司查询的话查询出来的结果就会很多(5000左右吧)。这时再点按钮导出的话,整个页面就会无法显示了(其实不光是点导出按钮出现无法显示情况,当查询出来的数据量过大时,再选一下部门DropdownList然后Page_Load()事件加载就会使整个页面无法显示,但是按具体的部门查询就可以多次查询导出也不会出现无法显示的问题)。这个问题已困扰寡人多时,一直未找到好的方法应付之,望高手指教。
下面贴出我的代码:
  private   void   ImgToExcel_Click(object   sender,   System.Web.UI.ImageClickEventArgs   e)
                {
                  Response.Clear();  
Response.Buffer=   true;  
Response.Charset= "utf-8 ";        
Response.AppendHeader( "Content-Disposition ", "attachment;filename=list.xls ");  
Response.ContentEncoding=System.Text.Encoding.GetEncoding( "utf-8 ");
Response.ContentType   =   "application/ms-excel ";
this.EnableViewState   =   false;
System.Globalization.CultureInfo   myCItrad   =   new   System.Globalization.CultureInfo( "ZH-CN ",true);
System.IO.StringWriter   oStringWriter   =   new   System.IO.StringWriter(myCItrad);  
System.Web.UI.HtmlTextWriter   oHtmlTextWriter   =   new   System.Web.UI.HtmlTextWriter(oStringWriter);
dg_calling.RenderControl(oHtmlTextWriter);  
Response.Write(oStringWriter.ToString());
Response.End();      
          }

------解决方案--------------------
应该是你的网网速慢吧,数据量大的时候网页就会超时了
------解决方案--------------------
我的代码和你的一样,导10W条数据也没有出现你这样的问题!

------解决方案--------------------
不如改下你的代码,先在服务器上生成唯一(Guid.NewGuid().ToString())文件名的excel文件, 最后在页面放置这个excel文件的http下载链接,或使用另个aspx页面读取这个文件到输出流(Response.WriteFile(excel文件相对/绝对路径);)