c# 匯出Excel

來源:互聯網
上載者:User

標籤:

web匯出Excel

用法:在伺服器端讀取資料,在伺服器端把資料以ms-execl的格式,以Response輸出到瀏覽器(用戶端)
這裡我們利用了ContentType屬性,如text/html,這時將輸出為超文本,即我們常見的網頁
格式到用戶端,如果改為 ms-excel將將輸出excel格式,也就是說以試算表的格式輸出到用戶端,這時瀏
覽器將提示你下載儲存。ContentType的屬性還包括:image/JPEG;text/HTML;image/GIF;vnd.ms-
excel/msword 。同理,我們也可以輸出(匯出)圖片、word文檔等。下面的方法,均用了這個屬性

 

 private void outputExcel()        {            Response.Clear();            Response.Buffer = true;            Response.AppendHeader("Content-Disposition", "attachment;filename=" + DateTime.Now.ToString("yyyyMMdd") + ".xls");            Response.ContentEncoding = System.Text.Encoding.UTF8;            Response.ContentType = "application/vnd.ms-excel";            this.EnableViewState = false;          }
html輸出為Excel
 public void outputExcel(System.Web.UI.Control ctl)        {            HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Excel.xls");            HttpContext.Current.Response.Charset = "UTF-8";            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;            HttpContext.Current.Response.ContentType = "application/ms-excel";            ctl.Page.EnableViewState = false;            System.IO.StringWriter tw = new System.IO.StringWriter();            System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);            ctl.RenderControl(hw);            HttpContext.Current.Response.Write(tw.ToString());            HttpContext.Current.Response.End();        }
頁面控制項輸出為Excel
private void outputExcel(DataTable dt)        {                      if (dt == null || dt.Rows.Count == 0)            {                Fun.Alert("請先檢索要查詢的資訊後在匯出!");                return;            }            string fileName = "社員資訊" + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + ".xls";            HttpResponse resp;            resp = Page.Response;            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");            resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName);            string colHeaders = "", ls_item = "", ls_Bottom = "";            DataRow[] myRow = dt.Select();//可以類似dt.Select("id>10")之形式達到資料篩選目的            int i = 0;            int cl = dt.Columns.Count;            //取得資料表各欄位標題,各標題之間以\t分割,最後一個欄位標題後加斷行符號符            //for (i = 0; i < cl; i++)            //{            //    if (i == (cl - 1))//最後一列,加\n            //    {            //        colHeaders += dt.Columns[i].Caption.ToString() + "\n";            //    }            //    else            //    {            //        colHeaders += dt.Columns[i].Caption.ToString() + "\t";            //    }            //}            colHeaders += "網點\t社員帳號\t地址\t姓名\t社會安全號碼\t手機號\t田畝冊\t田畝數\t入社時間\n";            resp.Write(colHeaders);//輸出標題列            //向HTTP輸出資料流中寫入取得的資料資訊            foreach (DataRow row in myRow)            {                //當前行資料寫入HTTP輸出資料流,並且置空ls_item以便下行資料                    for (i = 0; i < cl; i++)                {                    if (i == (cl - 1))//最後一列,加\n                    {                        ls_item += row[i].ToString() + "\n";                    }                    else                    {                        ls_item += row[i].ToString() + "\t";                    }                }                resp.Write(ls_item);                ls_item = "";            }            resp.Write(ls_Bottom);//輸出內容            resp.End();        }
DataTable輸出為Excel

1. 將整個網頁輸出為Excel,會將頁面中的按鈕、文字框、其他文字一併輸出,往往達不到匯出要求。

2. 將頁面中的控制項匯出為Excel(如DataGrid、Repeater等),基本可以達到要求,但遇到控制項分頁的情況下,只會匯出當前頁面的內容,問不是select的全部內容。

3. DataTable匯出為Excel,可以更靈活的控制匯出的標題、內容。如果還需要更詳細的設定Excel的格式,可以嘗試DataView匯出Excel的方法。

引用:

http://www.cnblogs.com/top5/archive/2010/02/16/1668801.html

 

c# 匯出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.