asp.net导出excel的问题

kitcause 2009-12-03 05:58:14

private void ToExcel(Control ctl, string FileName)
{

HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;

HttpContext.Current.Response.ContentType = "application/ms-excel";
HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + "" + FileName);
ctl.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
ctl.RenderControl(hw);
HttpContext.Current.Response.Write(tw.ToString());
HttpContext.Current.Response.End();
}



导出为以上代码,一般使用也正常,但发现有时会出现乱码,昨天一个个测试发现导出这个人时,有乱码,查看.xls代码如下去掉“甫”字一切显示正常
求解决办法,或有其他能解决乱码的导出方法。

<table cellspacing="0" rules="all" bordercolor="Gainsboro" border="1" id="DataGrid1" style="border-color:Gainsboro;border-width:1px;border-style:solid;font-size:X-Small;height:176px;width:900px;border-collapse:collapse;Z-INDEX: 105; LEFT: 16px; text-align:left TOP: 88px">
<tr align="left" valign="middle" style="background-color:#E4EBF3;font-size:X-Small;">
<td>编号</td><td>代办点代码</td><td>姓名</td><td>性别</td><td>院校名称</td><td>专业</td><td>学历</td><td>证书编号</td><td>录入时间</td><td>收费类别</td><td>费用</td><td>状态</td><td>备注</td><td>联系电话</td><td>联系地址</td>
</tr><tr align="left" valign="middle">
<td align="left" style="vnd.ms-excel.numberformat:@">120900949</td><td align="left" style="vnd.ms-excel.numberformat:@">105081288888</td><td nowrap="nowrap" align="left" style="vnd.ms-excel.numberformat:@">刘宁甫</td><td align="left" style="vnd.ms-excel.numberformat:@">男</td><td align="left" style="vnd.ms-excel.numberformat:@">广东药学院</td><td align="left" style="vnd.ms-excel.numberformat:@">临床医学</td><td align="left" style="vnd.ms-excel.numberformat:@">专科</td><td align="left" style="vnd.ms-excel.numberformat:@">105735200906001298</td><td align="left" style="vnd.ms-excel.numberformat:@">2009/12/1 11:14:42</td><td align="left">省内专科证书</td><td align="left">70</td><td align="left">未处理</td><td align="left"> </td><td> </td><td> </td>
</tr>
</table>
...全文
427 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
kitcause 2009-12-08
  • 打赏
  • 举报
回复
11楼的方法可以解决。
kitcause 2009-12-08
  • 打赏
  • 举报
回复
问题解决
lihuinihao6315 2009-12-08
  • 打赏
  • 举报
回复
看看是否OFFICE版本问题?
kitcause 2009-12-08
  • 打赏
  • 举报
回复
试用你这种方式,出来的效果还是一样
查看excel文件的代码,没问题,但直接打开还是乱码
dengxiao1981 2009-12-08
  • 打赏
  • 举报
回复
可以这样导出:

HttpWebRequest HttpWReq = (HttpWebRequest)WebRequest.Create(Request.Url.AbsoluteUri);
HttpWebResponse HttpWResp = (HttpWebResponse)HttpWReq.GetResponse();
System.IO.StreamReader SR = new StreamReader(HttpWResp.GetResponseStream(), System.Text.Encoding.GetEncoding("utf-8"));
string sBody = SR.ReadToEnd();
HttpWResp.Close();

HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=excel.xls");
HttpContext.Current.Response.Charset = "UTF-8";
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");

HttpContext.Current.Response.ContentType = ".xls";

HttpContext.Current.Response.Write(sBody);
HttpContext.Current.Response.End();
liuyjcel 2009-12-08
  • 打赏
  • 举报
回复
Response.Clear();
Response.Buffer = true;
Response.Charset = "GB2312";
Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");//设置输出流为简体中文
Response.ContentEncoding = System.Text.Encoding.UTF8;
Response.ContentType = "application/vnd.ms-excel"; //设置输出文件类型为excel文件
this.EnableViewState = false;

System.IO.StringWriter ow = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter wuh = new HtmlTextWriter(ow);

this.DGList.RenderControl(wuh);
Response.Write(ow.ToString());
Response.End();

试试这个吧。效果不错。
kitcause 2009-12-08
  • 打赏
  • 举报
回复
顶一下,还有人有办法吗?急。
kitcause 2009-12-07
  • 打赏
  • 举报
回复
1楼的和5楼差不多也试过了,没改webconfig文件,只改这一句,情况还是一样。
gdlpc 2009-12-07
  • 打赏
  • 举报
回复
我测试的会出现文件名是中文时,文件名会乱码,不知是什么问题
string FileName
当FileName为中文时,文件名乱码
kitcause 2009-12-07
  • 打赏
  • 举报
回复
4楼的,好像和我的差不多呀,而且里面没有编码设定,没测试。
kitcause 2009-12-07
  • 打赏
  • 举报
回复
5楼的测试了,还是乱码
mytimes_walker 2009-12-03
  • 打赏
  • 举报
回复
Web.Config加入一下代码:

<globalization requestEncoding="gb2312" responseEncoding="gb2312" culture="zh-CN" fileEncoding="gb2312" />

类里面加入下代码:

Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
十八道胡同 2009-12-03
  • 打赏
  • 举报
回复
乱码一般是编码的问题
红街咖啡 2009-12-03
  • 打赏
  • 举报
回复
恩.看看GB2312
我姓区不姓区 2009-12-03
  • 打赏
  • 举报
回复
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
你用其它编码(如gb2312)试试
HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

62,265

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧