zoukankan      html  css  js  c++  java
  • C# 导出datatable到excel

    前台代码:

    protected void Button7_Click(object sender, EventArgs e)
        {
            DataTable dt = DataExport.GetDefenseStu();//dt是从后台生成的要导出的datatable
            string fileName = "二辩名单" + ".xls";//设置导出文件的名称
            HttpContext curContext = System.Web.HttpContext.Current;
            curContext.Response.ContentType = "application/vnd.ms-excel.numberformat:@";
            curContext.Response.ContentEncoding = System.Text.Encoding.Default;
            curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8).ToString());
            curContext.Response.Charset = "";
            curContext.Response.Write(AddExcelHead());//显示excel的网格线
            curContext.Response.Write(ExportTable(dt));//导出
            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() + "</td>";
                    else
                        data += "<td>" + row[column].ToString() + "</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

  • 相关阅读:
    五、excel末尾补0和开头补0
    MYSQL查询前30条数据
    MYSQL数据库从A表把数据插入B表
    测试用例大全
    EXTJS 5.0 资料
    fs event_socket
    centos 编译swoole
    Valgrind简单用法
    linux 大并发下 内核优化
    FS拓展设置
  • 原文地址:https://www.cnblogs.com/MFxxk/p/1712169.html
Copyright © 2011-2022 走看看