我是先用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导出的文件中文显示正确,转换格式后中文变为乱码
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");
File.WriteAllText(path+"temp", sw,System.Text.Encoding.UTF7); 改成 File.WriteAllText(path+"temp", sw,System.Text.Encoding.UTF8);
htw.Encoding = "GB2312";
设一下System.Threading.Thread.CurrentThread.CurrentCulture试试
Encoding.UTF7.GetString(Encoding.Default.GetBytes(""));