標籤:
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