数据导出到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"

  /// <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

最新文章

  1. win10添加打印机--无法访问指定设备,路径或文件。。
  2. Centos搭建SVN服务器三步曲
  3. MSBUID相关(笔记)
  4. javascript中的defer和async学习+javascript执行顺序
  5. Spring AOP应用实例demo
  6. Hybrid App(一)App开发选型
  7. springMVC servlet 静态资源加载
  8. Eclipse中SVN设置文件为ignore后重新添加至版本控制
  9. javascript中词法环境、领域、执行上下文以及作业详解
  10. Python学习之再议row_input
  11. 提升现代web app中页面性能
  12. PIL库学习及运用
  13. JAVA与C#的区别
  14. java解析Excel(xls、xlsx两种格式)
  15. Java知多少(13)流程控制
  16. 强化学习10-Deep Q Learning-fix target
  17. es6Promise及小程序Promise用法
  18. JDK1.5新特性,基础类库篇,XML增强
  19. break MISSING_BLOCK_LABEL_160; 看源代码出现的,源代码是反编译的
  20. textwrap 模块

热门文章

  1. 前端资源构建-Grunt环境搭建
  2. Python全栈开发day9
  3. UCS2和UTF16有区别
  4. DSP学习中遇到的几个问题(初级)
  5. 处理数组的forEach map filter的兼容性
  6. deep learning on object detection
  7. javascript:history.go()和History.back()的区别
  8. Spring HTTP下载
  9. java 学习写架构必会几大技术点
  10. makfile