dataTable转excel

/// <summary>
        /// datatable导出excel
        /// </summary>
        /// <param name="dt">datatable</param>
        /// <param name="Title">文件名,后面会自动拼接年月日和.xls</param>
        /// <param name="colHeaders">表头</param>
        /// <param name="cl">列数</param>
        public static void ExportExcelWithBOM(DataTable dt, string Title, string colHeaders, int cl)
        {

            HttpResponse resp = System.Web.HttpContext.Current.Response;
            string ExcelName = Title + DateTime.Now.ToString("yyyyMMddHHmmss");
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + ExcelName + ".xls");
            string ls_item = "";
            DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
            int i = 0;
            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            resp.Write("<html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /></head><body><table border=1><tr style=\" Gray 1px solid;text-align:center\">");
            
            resp.Write(colHeaders + "</tr>");
            //向HTTP输出流中写入取得的数据信息
            //逐行处理数据
            foreach (DataRow row in myRow)
            {
                //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据  
                ls_item = "<tr bgcolor=#ABCDC1>";
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        ls_item += "<td>" + row[i].ToString() + "</td></tr>";
                    }
                    else
                    {
                        if (i == 2)
                        {
                            ls_item += "<td style='vnd.ms-excel.numberformat:@'>" + " " + row[i].ToString() + "</td>";//到处后已字符形式显示
                        }
                        else
                        {
                            ls_item += "<td>" + row[i].ToString() + "</td>";
                        }
                    }
                }
                resp.Write(ls_item);
            }
            resp.Write("</table></body></html>");
            resp.End();
        }

  表头可以这样获取

 string shtnl = "";
            shtnl = "<table border='1' cellspacing='1' cellpadding='1'>";
            shtnl = shtnl + "<thead>";
            //dtData.Columns["CompanyName"].ColumnName = "公司名";
            //dtData.Columns["CIDBRegistrationPlace"].ColumnName = "注册地";
            for (int j = 0; j < dtData.Columns.Count; j++)
            {
                shtnl = shtnl + "<th>" + dtData.Columns[j] + "</th>";
            }
            shtnl = shtnl + "</thead><tbody>";

  

猜你喜欢

转载自www.cnblogs.com/dushaojun/p/9121360.html