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

原文地址:https://www.cnblogs.com/MFxxk/p/1712169.html