asp.net c# 網頁 匯出excel 多表格 多個sheet

來源:互聯網
上載者:User

標籤:bsp   trim   網頁   blog   auth   date   border   log   push   

    /// <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\r\n" +                "X-Document-Type: Workbook\r\n" +                "Content-Type: multipart/related; boundary=\"-=BOUNDARY_EXCEL\"\r\n\r\n" +                "---=BOUNDARY_EXCEL\r\n" +                "Content-Type: text/html; charset=\"gbk\"\r\n\r\n" +                "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n" +                "xmlns:x=\"urn:schemas-microsoft-com:office:excel\">\r\n\r\n" +                "<head>\r\n" +                "<xml>\r\n" +                "<o:DocumentProperties>\r\n" +                "<o:Author>{0}</o:Author>\r\n" +                "<o:LastAuthor>{0}</o:LastAuthor>\r\n" +                "<o:Created>{1}</o:Created>\r\n" +                "<o:LastSaved>{1}</o:LastSaved>\r\n" +                "<o:Company>{2}</o:Company>\r\n" +                "<o:Version>11.5606</o:Version>\r\n" +                "</o:DocumentProperties>\r\n" +                "</xml>\r\n" +                "<xml>\r\n" +                "<x:ExcelWorkbook>\r\n" +                "<x:ExcelWorksheets>\r\n"               , Author               , DateTime.Now.ToString()               , Company);        foreach (var d in dt)        {            string gid = Guid.NewGuid().ToString();            sbBody.AppendFormat("<x:ExcelWorksheet>\r\n" +                "<x:Name>{0}</x:Name>\r\n" +                "<x:WorksheetSource HRef=\"cid:{1}\"/>\r\n" +                "</x:ExcelWorksheet>\r\n"                , d.TableName.Replace(":", "").Replace("\\", "").Replace("/", "").Replace("?", "").Replace("*", "").Replace("[", "").Replace("]", "").Trim()                , gid);            sbSheet.AppendFormat(             "---=BOUNDARY_EXCEL\r\n" +             "Content-ID: {0}\r\n" +             "Content-Type: text/html; charset=\"gbk\"\r\n\r\n" +             "<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n" +             "xmlns:x=\"urn:schemas-microsoft-com:office:excel\">\r\n\r\n" +             "<head>\r\n" +             "<xml>\r\n" +             "<x:WorksheetOptions>\r\n" +             "<x:ProtectContents>False</x:ProtectContents>\r\n" +             "<x:ProtectObjects>False</x:ProtectObjects>\r\n" +             "<x:ProtectScenarios>False</x:ProtectScenarios>\r\n" +             "</x:WorksheetOptions>\r\n" +             "</xml>\r\n" +             "</head>\r\n" +             "<body>\r\n"             , 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>\r\n" +                "</html>\r\n\r\n");        }        StringBuilder sb = new StringBuilder(sbBody.ToString());        sb.Append("</x:ExcelWorksheets>\r\n" +            "</x:ExcelWorkbook>\r\n" +           "</xml>\r\n" +            "</head>\r\n" +            "</html>\r\n\r\n");        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();    }

 

asp.net c# 網頁 匯出excel 多表格 多個sheet

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.