asp.net後台匯出excel的方法一:使用response匯出excel

來源:互聯網
上載者:User

標籤:

方法一:帶StringBuilder 方法的匯出

該方法是將所有的資料通過html的形式寫入到StringBuilder 中,然後通過response匯出。

熟悉html格式的人可以改變成各種格式。

List<U> objList = new List<U>();         objList = BLL.GetInfo();//讀取資料                                         StringBuilder sb = new StringBuilder();          sb.Append("<style type=\"text/css\">");          sb.Append("<!--");          sb.Append(".text");          sb.Append("{mso-style-parent:style0;");          sb.Append("font-size:10.0pt;");          sb.Append("font-family:\"Arial Unicode MS\", sans-serif;");          sb.Append("mso-font-charset:0;");          sb.Append(@"mso-number-format:\@;");          sb.Append("text-align:center;");          sb.Append("border:.5pt solid black;");          sb.Append("white-space:normal;}");          sb.Append("-->");          sb.Append("</style>");          sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");          sb.Append("<tr align=\"Center\" style=\"font-weight:bold;\">");          sb.Append("<td>ID</td><td>使用者名稱</td><td>真實姓名</td><td>省份</td><td>註冊時間</td");          sb.Append("</tr>");          foreach (U item in objList)          {              sb.Append("<tr align=\"Center\"><td>" + item.id + "</td><td>" + item.uName + "</td><td>" + item.rName + "</td><td>" + item.proId + "</td><td>" + item.regDate + "</td></tr>");          }          sb.Append("</table>");           System.Web.HttpContext.Current.Response.Clear();          System.Web.HttpContext.Current.Response.Charset = "GB2312";          // System.Web.HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;          // 添加頭資訊,為"檔案下載/另存新檔"對話方塊指定預設檔案名稱          System.Web.HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=myU.xls");          // 添加頭資訊,指定檔案大小,讓瀏覽器能夠顯示下載進度          // System.Web.HttpContext.Current.Response.AddHeader("Content-Length",sb.ToString());           // 指定返回的是一個不能被用戶端讀取的流,必須被下載          System.Web.HttpContext.Current.Response.ContentType = "application/ms-excel";           // 把檔案流發送到用戶端          System.Web.HttpContext.Current.Response.Write(sb.ToString());          // 停止頁面的執行           System.Web.HttpContext.Current.Response.End();    

方法二:帶StringWriter的匯出方法

該方法的格式不容易改變 方法與上面原理相同是將資料寫入到StringWriter 中 讓後到匯出

 眾所周知,Respone.Write()是輸出Html流程式給使用者的。考慮到一個標準的Web頁面的是有多種呈現方式的,
例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 這是以標準網頁形式輸出Html流

<meta http-equiv="Content-Type" content="application/vnd.ms-excel">
<meta http-equiv="Content-Disposition" content="attachment; filename=ex.xls">這是以附件形式輸出Html流,而且是將“資料”存放在ex.xls這個表格中。^_^

那麼我們以編碼的形式如何顯示^_^(現在寫VB了,給出的也是VB的案例)
1 Dim _DataStringWriter As StringWriter = New StringWriter 定義一個StringWriter對象
2 _DataStringWriter.WiteLine("FirstFieldName" + ControlChars.Tab + "SecondFieldName")給輸出的Excel表格每  列加入名稱
3 從資料“容器”裡面將資料取出。例如
   Dim dt as New DataTable
   For i as Integer = 0 To dt.Rows.Count - 1 Then
   _DataStringWriter.WiteLine(dt(i)(0) + ControlChars.Tab + dt(i)(1))
   Next
4 Response.AddHeader("Content-Disposition", "attachment; filename=" & fileName)
   Response.ContentType = "application/vnd.ms-excel"
   Response.ContentEncoding = System.Text.Encoding.Unicode
5 Response.Write(_DataStringWriter) 輸出Html流
   Response.End()
以上已經可以實現將資料匯入到Excel表格,如果需要匯入Word則Response.ContentType = "application/vnd.ms-excel"中改為Response.ContentType = "application/vnd.ms-word"即可。但是注意將fileName也應隨之改變,XX.xls或者XX.doc

方法三:datatable匯出

該方法是response一行一行匯出的,你可以根據自己的需求添加相應的行。

/// <summary>    /// DataTable中的資料匯出到Excel並下載    /// </summary>    /// <param name="dt">要匯出的DataTable</param>    /// <param name="FileType">類型</param>    /// <param name="FileName">Excel的檔案名稱</param>    public void CreateExcel(DataTable dt, string FileType, string FileName)    {        Response.Clear();        Response.Charset = "UTF-8";        Response.Buffer = true;        Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");        Response.AppendHeader("Content-Disposition", "attachment;filename=\"" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls\"");        Response.ContentType = FileType;        string colHeaders = string.Empty;        string ls_item = string.Empty;        DataRow[] myRow = dt.Select();        int i = 0;        int cl = dt.Columns.Count;        foreach (DataRow row in myRow)        {            for (i = 0; i < cl; i++)            {                if (i == (cl - 1))                {
//到頭換行 ls_item += row[i].ToString() + "\n"; } else {
//換格 ls_item += row[i].ToString() + "\t"; } } //一行一行的寫入 Response.Output.Write(ls_item); ls_item = string.Empty; } Response.Output.Flush(); Response.End(); }

 

asp.net後台匯出excel的方法一:使用response匯出excel

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.