问题描述
今天在一个ASP.NET项目使用Gridview的方式输出Excel到客户端,代码如下:1Response.Buffer=true;2//Response.ClearContent();3//指定http名称和值4Response.AddHeader("content-disposition","attachment;filename="+HttpUtility.UrlEncode("test",System.Text.Encoding.UTF8)+".xls");5//指定文件类型6Response.ContentType="application/excel";7Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");8StringWritersw=newStringWriter();9ExcelGridView.AllowPaging=false;10this.ExcelGridView.DataSource=dtStudentScore;11ExcelGridView.DataBind();12//HtmlTextWriter输出流13HtmlTextWriterhtw=newHtmlTextWriter(sw);14ExcelGridView.RenderControl(htw);15stringstyle=@"<style>.text{mso-number-format:@;}</script>";//单元格式为文本格式16//sw写入到http输出流17Response.Output.Write(style);18Response.Output.Write(sw.ToString());19Response.Flush();20Response.End();21ExcelGridView.Visible=false;在客户端输出Excel后,在点击原页面上任何按钮,页面没有任何反应,请问这是为什么?
解决方案
解决方案二:
不知道了
解决方案三:
因为你用的这个输出原理是改变了页面的输出类型
解决方案四:
服务器送给客户端的数据包类型能够是text/html文本,也能够是gif/jpeg图像文档,所以每次传输前,我们都必须告知客户端将要传输的文档类型,一般默认情况下为“text/html”类型。<%response.contenttype="text/html"%><%response.contenttype="image/gif"%><%response.contenttype="image/jpeg"%><%response.contenttype="text/plain"%><%response.contenttype="image/jpeg"%><%response.contenttype="application/x-cdf"%>
解决方案五:
可以换一种方法试试又很多方法的
解决方案六:
你可以用这种方法:DataSetds=GridView数据源try{stringsql=string.Empty;System.IO.File.Delete(Server.MapPath("/Uploads/ChangInExport.xls"));//删除原文件System.IO.File.Copy(Server.MapPath("/Uploads/ExportTemplate.xls"),Server.MapPath("/Uploads/ChangInExport.xls"),true);//COPY母板文件//对空文件进行Insert数据插入stringMyConnectionstring="Provider=Microsoft.Jet.OLEDB.4.0;DataSource='"+myname+"';Excel8.0;HDR=YES";OleDbConnectionolconn=newOleDbConnection(MyConnectionstring);olconn.Open();//循环插入每一条数据for(inti=0;i<ds.Tables[0].Rows.Count;i++){stringxm=ds.Tables[0].Rows[i]["xm"].ToString();stringxbm=ds.Tables[0].Rows[i]["xbm"].ToString();stringzkzh=ds.Tables[0].Rows[i]["zkzh"].ToString();stringksh=ds.Tables[0].Rows[i]["ksh"].ToString();stringzyh=ds.Tables[0].Rows[i]["zyh"].ToString();stringgx=ds.Tables[0].Rows[i]["gx"].ToString();stringzy=ds.Tables[0].Rows[i]["zy"].ToString();stringlqpc=ds.Tables[0].Rows[i]["lqpc"].ToString();sql="Insertinto["+mytablename+"$]([xm],[xbm],[zkzh],[ksh],[zyh],[gx],[zy],[lqpc])VALUES('"+xm+"','"+xbm+"','"+zkzh+"','"+ksh+"','"+zyh+"','"+gx+"','"+zy+"','"+lqpc+"')";OleDbCommandcmd1=newOleDbCommand(sql,olconn);cmd1.ExecuteNonQuery();}olconn.Close();}catch(Exceptionex){//导出错误记入日志}
解决方案七:
引用3楼junzhang4008的回复:
服务器送给客户端的数据包类型能够是text/html文本,也能够是gif/jpeg图像文档,所以每次传输前,我们都必须告知客户端将要传输的文档类型,一般默认情况下为“text/html”类型。<%response.contenttype="text/html"%><%response.contenttype="image/gif"%><%response.contenttype="image/jpeg"%><%response.contenttype="text/plain"%><%response.contenttype="image/jpeg"%><%response.conte…
谢谢回答,那请问我遇到这种问题该如何处理?
解决方案八:
不行就把页面reload一次把。呵呵,很龌龊的方法。
解决方案九:
引用7楼junzhang4008的回复:
不行就把页面reload一次把。呵呵,很龌龊的方法。
我想知道为什么会出现这种问题,因为我同一个项目下面其他页面也是用同样方式导出Excel的,不会出现这样的问题,我的代码是完全拷贝他,非常奇怪。
解决方案十:
在一个新页面输出