c# web datatable 导出到excel

经过一段时间的研究导出的excel不是真正意思的excel而是html,你可以将导出的"excel"文件另存为就能看到它的真实面目了。

原因:生成的excel是有html代码拼接而成的。

1)web页面的方法

/// 
        /// export error datatable
        /// 
        /// 
        private void ExportErrorDataTable(DataTable dtError)
        {
             string fileName = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";//设置导出文件的名称
            HttpContext curContext = System.Web.HttpContext.Current;
            curContext.Response.ContentType = "application/vnd.ms-excel";
            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(dtError));//导出
            curContext.Response.Write(AddExcelbottom());//显示excel的网格线
            curContext.Response.Flush();
            curContext.Response.End();
        }

2)公用方法

#region 公共程序(导出excel)
        public static string ExportTable(DataTable tb)
        {
            string data = "";
            data += "";
            //写出列名
            data += "";
            foreach (DataColumn column in tb.Columns)
            {
                data += "";
            }
            data += "";
            //写出数据
            foreach (DataRow row in tb.Rows)
            {
                data += "";
                foreach (DataColumn column in tb.Columns)
                {
                    if (column.ColumnName.Equals("学生学号"))
                        data += "";
                    else
                        data += "";
                }
                data += "";
            }
            data += "
" + column.ColumnName + "
" + row[column].ToString() + "" + row[column].ToString() + "
"; return data; } public static string AddExcelHead() { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(" "); sb.Append(" "); sb.Append(" "); sb.Append(""); return sb.ToString(); } public static string AddExcelbottom() { StringBuilder sb = new StringBuilder(); sb.Append(""); sb.Append(""); return sb.ToString(); } #endregion


 

你可能感兴趣的:(c#,web)