请问我把DataGrid中的数据导入到Excel为什么会乱码?

tigerge 2006-08-05 05:27:53
//将DataGrid1构成的html代码写进StringWriter
this.DataGrid1.Page.EnableViewState = false;
System.IO.StringWriter tw = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
this.DataGrid1.RenderControl(hw);
string HtmlInfo = tw.ToString().Trim();

string DocFileName = "aa.xls";
string FilePathName = Request.PhysicalPath;
FilePathName = FilePathName.Substring(0,FilePathName.LastIndexOf("\\"));
//得到Excel文件的物理地址
FilePathName = FilePathName +"\\" + DocFileName;
System.IO.File.Delete(FilePathName);
FileStream Fs = new FileStream(FilePathName, FileMode.Create);
BinaryWriter BWriter= new BinaryWriter(Fs,System.Text.Encoding.GetEncoding("gb2312"));
//将DataGrid的信息写入Excel文件
BWriter.Write(HtmlInfo);
BWriter.Close();
Fs.Close();

导入成功后打开Excel所有中文都显示为类似韩文的文字.GetEncoding后我什么都试过了,包括GB18030,UTF-7;UTF-8.其中UTF-8和上述一样,UTF-7全成了英文乱码.
其实用写字板,EDITPLUS这些打开导入后的EXCEL文件查看里面的中文都是正常的,就是用EXCEL进去不正常.请有经验的朋友指教如何解决,不甚感激.
...全文
386 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
geggegeda 2006-09-04
  • 打赏
  • 举报
回复
学习
ldw701 2006-08-29
  • 打赏
  • 举报
回复
改成uft-7是可以的,我也是碰到这个问题。。。
改了就可以了
doitnow2000 2006-08-10
  • 打赏
  • 举报
回复
Response.Charset="GB2312";
.......
linfuguo 2006-08-10
  • 打赏
  • 举报
回复
为什么非要用这种方法呢?

http://www.cnblogs.com/linfuguo/archive/2006/03/23/357155.html看看这种!
tigerge 2006-08-09
  • 打赏
  • 举报
回复
up
tigerge 2006-08-08
  • 打赏
  • 举报
回复
up
tigerge 2006-08-07
  • 打赏
  • 举报
回复
哎,我改成utf-7不行,详细情况楼上有说,明天再来看了,希望有高手帮忙解决,最好能自己试下看看情况.
terencegan 2006-08-07
  • 打赏
  • 举报
回复
改成utf-7
tigerge 2006-08-07
  • 打赏
  • 举报
回复
TO:WeekZero(【星期零】| Nothing is impossible)
兄台所给的例子我也试用过,在网上一搜也多有把utf-8改成utf-7即可解决乱码的说法,不过我实际试用后好像并非如此.如果只在此处改不改WEB.CONFIG,则EXCEL显示正常(用其他也正常),但标题如果为中文(例子是FILENAME)的话标题会变乱码,如果在WEB.CONFIG里也修改成utf-7会提示"
Base-64 字符串中的无效字符"出错.至于WEBCONFIG里都改成GB2312等我也试过,没效.
至于顶楼的方法则无论怎么改内文都是韩文.
伴老思源 2006-08-07
  • 打赏
  • 举报
回复
统一字符类型为gb2312,可在webconfig中作全局变化
WeekZero 2006-08-07
  • 打赏
  • 举报
回复
Response.Clear();
Response.Buffer= true;
Response.Charset="GB2312";
Response.AppendHeader("Content-Disposition","attachment;filename=FileName.xls");
Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-7");//设置输出流为简体中文
Response.ContentType = "application/ms-excel";//设置输出文件类型为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);
this.DataGrid1.RenderControl(oHtmlTextWriter);
Response.Write(oStringWriter.ToString());
Response.End();


孟子的例子上改了一下:utf-7
可以解决中文乱码的问题
WeekZero 2006-08-07
  • 打赏
  • 举报
回复
BinaryWriter BWriter= new BinaryWriter(Fs,System.Text.Encoding.GetEncoding("gb2312"));

=》

BinaryWriter BWriter= new BinaryWriter(Fs,System.Text.Encoding.GetEncoding("utf-7"));
tigerge 2006-08-07
  • 打赏
  • 举报
回复
可是我改了还是问题如故啊.
改用Response输出,EXCEL里数据是正常了,但如果标题设为中文还是会乱码(只是不像韩文了).其实顶楼的代码连上任何一个有数据的DATAGRID就可以用了,请有心帮助的试下是否会乱码,原因何在?多谢.
hbzy123 2006-08-06
  • 打赏
  • 举报
回复
修改 WEB.Config中的
<globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
为:
<globalization requestEncoding="gb2312" responseEncoding="gb2312"/>
tigerge 2006-08-06
  • 打赏
  • 举报
回复
UP
hujunhua 2006-08-06
  • 打赏
  • 举报
回复
p
tigerge 2006-08-06
  • 打赏
  • 举报
回复
up
tigerge 2006-08-05
  • 打赏
  • 举报
回复
UP

62,254

社区成员

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

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

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

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