猿问

英文系统中Excel中文乱码问题

我是先用Gridview导出,然后再转换格式,部分代码如下
  StringWriter sw = new StringWriter();
  HtmlTextWriter htw = new HtmlTextWriter(sw);
  GV.RenderControl(htw);
  File.WriteAllText(path+"temp", sw,System.Text.Encoding.UTF7);

  Excel.Application excelApp = new Excel.ApplicationClass();
  Excel.Workbooks wbs = excelApp.Workbooks;
  Excel.Workbook wb = wbs.Open(path + "temp", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);//创建WorkBook
  wb.SaveAs(path, Excel.XlFileFormat.xlExcel7, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, System.Text.Encoding.UTF7, Type.Missing, Type.Missing);

系统为英文的Windows 2003,Office也是2003英文版
已在Regional and Language Options中选择了Chinese (PRC)

GV导出的文件中文显示正确,转换格式后中文变为乱码

交互式爱情
浏览 705回答 9
9回答

Cats萌萌

temp  这个文件应该是一个html 格式的问题,楼主需要检查一下这个文件中 <meta http-equiv="Content-Type" content="text/html; charset=UTF-7" />charset 是不是 UTF-7如果不是,改成UTF-7试试。你 File.WriteAllText(path+"temp", sw,System.Text.Encoding.UTF7);这句只是把文件本身的编码格式设置成了utf-7,但应没有改变html 文件中的编码格式。因为你的文件本身编码格式没问题,所以你打开这个文件时中文显示正常。但转换时会按html的编码格式来转换,这就导致转换后的文件中文为乱码。

莫回无

GB2312

绝地无双

Encoding.UTF7->Encoding.GB2312

眼眸繁星

把Response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); 改成Response.ContentEncoding=System.Text.Encoding.GetEncoding("utf-7");

SMILET

 File.WriteAllText(path+"temp", sw,System.Text.Encoding.UTF7);  改成  File.WriteAllText(path+"temp", sw,System.Text.Encoding.UTF8);

慕神8447489

[二合一]C#读取和导出EXCEL类库(可操作多个SHEET) 看看这个到EXCEL的。不用装EXCEL 

30秒到达战场

设一下System.Threading.Thread.CurrentThread.CurrentCulture试试

ITMISS

谢谢!问题已经解决了,问题是出在要在英文Office的语言设置中添加中文

隔江千里

Encoding.UTF7.GetString(Encoding.Default.GetBytes(""));
随时随地看视频慕课网APP
我要回答