zoukankan      html  css  js  c++  java
  • asp.net c# 网页 导出excel 多表格 多个sheet

        /// <summary>
        ///可导出多个sheet表
        /// </summary>
        /// <param name="Author">作者</param>
        /// <param name="Company">公司</param>
        /// <param name="dt">多个DataTable</param>
        /// <param name="fileName">文件名</param>
        public static void PushExcelToClientEx(string Author, string Company, DataTable[] dt, string fileName)
        {
            if (!fileName.Contains(".xls"))
            {
                fileName += ".xls";
            }
    
            StringBuilder sbBody = new StringBuilder();
            StringBuilder sbSheet = new StringBuilder();
    
            sbBody.AppendFormat(
                    "MIME-Version: 1.0
    " +
                    "X-Document-Type: Workbook
    " +
                    "Content-Type: multipart/related; boundary="-=BOUNDARY_EXCEL"
    
    " +
                    "---=BOUNDARY_EXCEL
    " +
                    "Content-Type: text/html; charset="gbk"
    
    " +
                    "<html xmlns:o="urn:schemas-microsoft-com:office:office"
    " +
                    "xmlns:x="urn:schemas-microsoft-com:office:excel">
    
    " +
                    "<head>
    " +
                    "<xml>
    " +
                    "<o:DocumentProperties>
    " +
                    "<o:Author>{0}</o:Author>
    " +
                    "<o:LastAuthor>{0}</o:LastAuthor>
    " +
                    "<o:Created>{1}</o:Created>
    " +
                    "<o:LastSaved>{1}</o:LastSaved>
    " +
                    "<o:Company>{2}</o:Company>
    " +
                    "<o:Version>11.5606</o:Version>
    " +
                    "</o:DocumentProperties>
    " +
                    "</xml>
    " +
                    "<xml>
    " +
                    "<x:ExcelWorkbook>
    " +
                    "<x:ExcelWorksheets>
    "
                   , Author
                   , DateTime.Now.ToString()
                   , Company);
    
            foreach (var d in dt)
            {
                string gid = Guid.NewGuid().ToString();
                sbBody.AppendFormat("<x:ExcelWorksheet>
    " +
                    "<x:Name>{0}</x:Name>
    " +
                    "<x:WorksheetSource HRef="cid:{1}"/>
    " +
                    "</x:ExcelWorksheet>
    "
                    , d.TableName.Replace(":", "").Replace("\", "").Replace("/", "").Replace("?", "").Replace("*", "").Replace("[", "").Replace("]", "").Trim()
                    , gid);
    
    
                sbSheet.AppendFormat(
                 "---=BOUNDARY_EXCEL
    " +
                 "Content-ID: {0}
    " +
                 "Content-Type: text/html; charset="gbk"
    
    " +
                 "<html xmlns:o="urn:schemas-microsoft-com:office:office"
    " +
                 "xmlns:x="urn:schemas-microsoft-com:office:excel">
    
    " +
                 "<head>
    " +
                 "<xml>
    " +
                 "<x:WorksheetOptions>
    " +
                 "<x:ProtectContents>False</x:ProtectContents>
    " +
                 "<x:ProtectObjects>False</x:ProtectObjects>
    " +
                 "<x:ProtectScenarios>False</x:ProtectScenarios>
    " +
                 "</x:WorksheetOptions>
    " +
                 "</xml>
    " +
                 "</head>
    " +
                 "<body>
    "
                 , gid);
    
                sbSheet.Append("<table border='1'>");
                sbSheet.Append("<tr style='background-color: #CCC;'>");
                for (int i = 0; i < d.Columns.Count; i++)
                {
                    sbSheet.AppendFormat("<td style='vnd.ms-excel.numberformat: @;font-weight:bold'>{0}</td>", d.Columns[i].ColumnName);
                }
                sbSheet.Append("</tr>");
                for (int j = 0; j < d.Rows.Count; j++)
                {
                    sbSheet.Append("<tr>");
                    for (int k = 0; k < d.Columns.Count; k++)
                    {
                        sbSheet.AppendFormat("<td style='vnd.ms-excel.numberformat: @;'>{0}</td>", Convert.ToString(d.Rows[j][k]));
                    }
                    sbSheet.Append("</tr>");
                }
                sbSheet.Append("</table>");
                sbSheet.Append("</body>
    " +
                    "</html>
    
    ");
            }
    
            StringBuilder sb = new StringBuilder(sbBody.ToString());
    
            sb.Append("</x:ExcelWorksheets>
    " +
                "</x:ExcelWorkbook>
    " +
               "</xml>
    " +
                "</head>
    " +
                "</html>
    
    ");
    
            sb.Append(sbSheet.ToString());
    
            sb.Append("---=BOUNDARY_EXCEL--");
    
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.ClearContent();
            HttpContext.Current.Response.ClearHeaders();
            HttpContext.Current.Response.Buffer = true;
    
            HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
            HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("gbk");
            HttpContext.Current.Response.Write(sb.ToString());
            HttpContext.Current.Response.End();
        }
  • 相关阅读:
    Postgresql HStore 插件试用小结
    postgres-xl 安装与部署 【异常处理】ERROR: could not open file (null)/STDIN_***_0 for write, No such file or directory
    GPDB 5.x PSQL Quick Reference
    postgresql 数据库schema 复制
    hive 打印日志
    gp与 pg 查询进程
    jquery table 发送两次请求 解惑
    python 字符串拼接效率打脸帖
    postgresql 日期类型处理实践
    IBM Rational Rose软件下载以及全破解方法
  • 原文地址:https://www.cnblogs.com/diose/p/7213846.html
Copyright © 2011-2022 走看看