问题描述
不知道什么原因publicstaticvoidCreateExcel(HttpContextcontext,DataTabledt,stringFileName){HttpResponseResponse=context.Response;Response.Clear();Response.Charset="UTF-8";Response.Buffer=true;Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");Response.AppendHeader("Content-Disposition","attachment;filename=""+System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)+".xls"");//处理。。。Response.ContentType="application/ms-excel";Response.Output.Write(ls_item);ls_item=string.Empty;Response.Output.Flush();Response.End();提示提示无法下载,与服务器连接被重置试过关闭防火墙,也不行,何解?大哥们帮忙
解决方案
解决方案二:
本地win7iis7.5服务器2008r2iis7.5
解决方案三:
ls_item是什么东东?你在“本地”肯定没有测试过多用户同时访问的情形吧?!
解决方案四:
1、服务器上是不是没有安装excel软件?2、IIS上发布的引用程序是否只有浏览的权限?开放写的权限
解决方案五:
publicstaticvoidCreateExcel(HttpContextcontext,DataTabledt,stringFileName){HttpResponseResponse=context.Response;Response.Clear();Response.Charset="UTF-8";Response.Buffer=true;Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");Response.AppendHeader("Content-Disposition","attachment;filename=""+System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)+".xls"");Response.ContentType="application/ms-excel";stringcolHeaders=string.Empty;stringls_item=string.Empty;//定义表对象与行对象,同时用DataSet对其值进行初始化DataRow[]myRow=dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的inti=0;intcl=dt.Columns.Count;//取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符for(i=0;i<cl;i++){if(i==(cl-1))//最后一列,加n{colHeaders+=dt.Columns[i].Caption.ToString()+"n";}else{colHeaders+=dt.Columns[i].Caption.ToString()+"t";}}Response.Output.Write(colHeaders);//向HTTP输出流中写入取得的数据信息//逐行处理数据foreach(DataRowrowinmyRow){//当前行数据写入HTTP输出流,并且置空ls_item以便下行数据for(i=0;i<cl;i++){if(i==(cl-1))//最后一列,加n{ls_item+=row[i].ToString()+"n";}else{ls_item+=row[i].ToString()+"t";}}Response.Output.Write(ls_item);ls_item=string.Empty;}Response.Output.Flush();Response.End();}
解决方案六:
这是那个方法这服务器就我一个人在用,还没发布装了office,但我没引用它的dll啊usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Data;就这几个
解决方案七:
大哥们帮忙,真心急呀,开始以为是防火墙设置阻止写到客户端,可关了也没用呀是否哪设置的问题,不让下载excel啥的?mime看过了,有xls啊
解决方案八:
引用5楼E_wKKAZLMN的回复:
这是那个方法这服务器就我一个人在用,还没发布装了office,但我没引用它的dll啊usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Data;就这几个
你的服务器端用不着Office。你的程序跟Office无关,不过就是输出网页,然后保存时把文本文件名乱写成.xls后缀的,好让客户端的Excel去转换。你把"attachment;filename=""+System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)+".xls"");改成"attachment;filename=""+System.Web.HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)+".c"");是不是就认为跟excel毫无关系而变成c#源代码了?可见你的这个程序根本跟excel没有直接关系。另外这里也不需要为filename前后加上双引号。加上反而可能是错的。
解决方案九:
如果你不能跟踪ls_item,那么这可能解决不了。重新从网上找一段与ls_item无关的代码超过来吧。
解决方案十:
擦,你会不会撒自行解决了
解决方案十一:
asp.net导出Excel文档示例privatevoidExport(stringFileType,stringFileName){Response.Charset="GB2312";Response.ContentEncoding=System.Text.Encoding.UTF7;Response.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,Encoding.UTF8).ToString());Response.ContentType=FileType;this.EnableViewState=false;StringWritertw=newStringWriter();HtmlTextWriterhw=newHtmlTextWriter(tw);GridView1.RenderControl(hw);Response.Write(tw.ToString());Response.End();}