在ASP.NET根据DataTable中的内容导出Excel

 前台代码:

<asp:Button ID="btnExcel" runat="server" Text="Excel导出" CssClass="button" OnClick="btnExcel_Click" />

后台实现功能代码:

       //实现导出
        protected void btnExcel_Click(object sender, EventArgs e)
        {
            DataTable thisTable = RptBinds("id>0 and status in(2,3) and is_refund=0 " + CombSqlTxt(), "add_time desc,id desc");
            string css = ".firstTR td{color:blue;widtd:100px;}.secondTR td{color:blue;widtd:100px;}.tdal{text-align:center;}.tdals{text-align:center;background-color:#ccfefe;}";
            string filename = "学员信息.xls";//Excel名称
            ExportToExcel(filename, GetExcelContent(thisTable), css);
        }


        /// <summary>
        /// 把DataTable的内容转成Table中拼接的字符串
        /// </summary>
        /// <param name="dt">数据源</param>
        /// <returns>返回一个Table格式的字符串</returns>
        private string GetExcelContent(DataTable dt)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<table  border='1' >");
            //生成表格头
            sb.Append("<tr class='firstTR' style='height:30px;'><td class='tdals'>学号</td><td class='tdals'>姓名</td><td class='tdals'>性别</td>");
            sb.Append("<td class='tdals'>出生日期</td><td class='tdals'>民族</td>");
            sb.Append("<td class='tdals'>手机号码</td><td class='tdals'>班级</td><td class='tdals'>地址</td></tr>");
            //循环生成表格内容
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                sb.Append("<tr class='secondTR'><td class='tdal'>" + dt.Rows[i]["StudentID"] + "</td>");
                sb.Append("<td class='tdal'>" + dt.Rows[i]["Name"] + "</td>");
                sb.Append("<td class='tdal'>" + dt.Rows[i]["Gender"] + "</td>");
                sb.Append("<td >" + dt.Rows[i]["Age"] + "</td>");
                sb.Append("<td >" + dt.Rows[i]["Nation"] + "</td>");
                sb.Append("<td class='tdal'>" + dt.Rows[i]["Phone"] + "</td>");
                sb.Append("<td class='tdal'>" + dt.Rows[i]["Sclass"] + "</td>");
                sb.Append("<td class='tdal'>" + dt.Rows[i]["Address"] + "</td></tr>");
            }

            sb.Append("</table>");
            return sb.ToString();
        }

        /// <summary>
        /// 导出生成的Excel
        /// </summary>
        /// <param name="filename">Excel名称</param>
        /// <param name="content">内容</param>
        /// <param name="cssText">样式</param>
        public static void ExportToExcel(string filename, string content, string cssText)
        {
            var res = HttpContext.Current.Response;
            content = String.Format("<style type='text/css'>{0}</style>{1}", cssText, content);

            res.Clear();
            res.Buffer = true;
            res.Charset = "GB2312";
            res.AddHeader("Content-Disposition", "attachment; filename=" + filename);
            res.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            res.ContentType = "application/ms-excel;charset=GB2312";
            res.Write(content);
            res.Flush();
            res.End();
        }

 

posted @ 2018-03-16 11:24  老猿-孜孜不倦  阅读(215)  评论(0)    收藏  举报