数据导出Excel中文乱码
2015-12-15 10:13
453 查看
数据导出到EXCEL提供用户下载,当记录数大于5行时不会出现乱码.但只要不退出Excel,再删除除记录,当记录数小于5行时,导出也不会出现乱码.当然一旦退出Excel再导出就会出现乱码了.
可以试试
试下以下代码,加个头和尾
string a1 = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Datos</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=GB2312\" />\n<style>\n</style>\n</head>\n<body>\n";
string a2 = "\n</body>\n</html>";
Response.Write(a1 + sw.ToString() + a2);
另外,UTF7在office2007无法打开。
或者web.config中
requestEncoding="utf-8"
responseEncoding="utf-8"
可以试试
试下以下代码,加个头和尾
string a1 = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>Datos</title>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=GB2312\" />\n<style>\n</style>\n</head>\n<body>\n";
string a2 = "\n</body>\n</html>";
Response.Write(a1 + sw.ToString() + a2);
另外,UTF7在office2007无法打开。
或者web.config中
requestEncoding="utf-8"
responseEncoding="utf-8"
/// <summary> /// export error datatable /// </summary> /// <param name="dtError"></param> public void ExportErrorDataTable(DataTable dtError) { string fileName = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";//设置导出文件的名称 System.Web.HttpContext curContext = System.Web.HttpContext.Current; curContext.Response.ContentType = "application/vnd.ms-excel"; curContext.Response.ContentEncoding = System.Text.Encoding.UTF8; curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, Encoding.UTF8).ToString()); curContext.Response.Charset = "UTF-8"; curContext.Response.Write(AddExcelHead());//显示excel的网格线 curContext.Response.Write(ExportTable(dtError));//导出 curContext.Response.Write(AddExcelbottom());//显示excel的网格线 curContext.Response.Flush(); curContext.Response.End(); } #region 公共程序(导出excel) public static string ExportTable(DataTable tb) { string data = ""; data += "<table cellspacing=\"0\" cellpadding=\"5\" rules=\"all\" border=\"0\">"; //写出列名 data += "<tr style=\"font-weight: bold; white-space: nowrap;\">"; foreach (DataColumn column in tb.Columns) { data += "<td>" + column.ColumnName + "</td>"; } data += "</tr>"; //写出数据 foreach (DataRow row in tb.Rows) { data += "<tr>"; foreach (DataColumn column in tb.Columns) { if (column.ColumnName.Equals("产品名称")) data += "<td style=\"vnd.ms-excel.numberformat:@\">" + row[column].ToString().Replace('•', '.') + "</td>"; else data += "<td style=\"vnd.ms-excel.numberformat:@\">" + row[column].ToString() + "</td>"; } data += "</tr>"; } if (tb.Rows.Count < 8)//因为少于8行的话,会出现乱码 { for (int i = 0; i < 8; i++) { data += "<tr>"; foreach (DataColumn column in tb.Columns) { data += "<td style=\"vnd.ms-excel.numberformat:@\"> </td>"; } data += "</tr>"; } } data += "</table>"; return data; } public static string AddExcelHead() { StringBuilder sb = new StringBuilder(); sb.Append("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">"); sb.Append(" <head>"); sb.Append(" <!--[if gte mso 9]><xml>"); sb.Append("<x:ExcelWorkbook>"); sb.Append("<x:ExcelWorksheets>"); sb.Append("<x:ExcelWorksheet>"); sb.Append("<x:Name></x:Name>"); sb.Append("<x:WorksheetOptions>"); sb.Append("<x:Print>"); sb.Append("<x:ValidPrinterInfo />"); sb.Append(" </x:Print>"); sb.Append("</x:WorksheetOptions>"); sb.Append("</x:ExcelWorksheet>"); sb.Append("</x:ExcelWorksheets>"); sb.Append("</x:ExcelWorkbook>"); sb.Append("</xml>"); sb.Append("<![endif]-->"); sb.Append(" </head>"); sb.Append("<body>"); return sb.ToString(); } public static string AddExcelbottom() { StringBuilder sb = new StringBuilder(); sb.Append("</body>"); sb.Append("</html>"); return sb.ToString(); } #endregion
相关文章推荐
- SQL大圣之路笔记——sql PROCEDURE 脚本维护规范
- 消息中间件对比
- 位运算总结2:利用位运算实现加法
- [Java] 集合类克隆方法与内部排序
- 高性能Java网络框架 MINA
- Restrictions的部分用法
- 用wireshark抓包分析tcp
- Implement Trie (Prefix Tree)
- 服务治理过程演进
- [LINK]Gulp网站
- python入门
- 警告: [SetContextPropertiesRule]{Context} Setting property 'source' to 'org.eclipse.jst.jee.server:esignmanage' did not find a matching property.解决
- 使用Xcode查找项目中的中文字符串
- 实现WebView的免登陆
- Linux下怎样搭建 SVN 服务器
- “互联网+”4大新趋势突破企业“寒冬”之困
- 显著性检测综述
- android 保存bitmap到SD卡
- Android缓存处理和清除数据、清除缓存、一键清理的区别
- input内的文件水平剧中和垂直居中