Ext.net官網上有Excel導出的方法,在Version1.5和目前最新的Version2.0版本上都有該方法。但是都沒有列頭……下面介紹的方法也是在網上找的。
別問我為什么不放一個原著的URL。那個家伙自己也是轉的,就這樣轉啊轉。到我這我都不曉得那個是原作者了……關鍵它幫助了我,在這整理下,留個腳印。
代碼:
public void ToExcel(GridPanel gp, string fileName, DataTable dt, HttpResponse resp) { resp.Clear(); resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312"); resp.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); resp.ContentType = "application nd.ms-excel"; string colHeaders = "", ls_item = ""; int i = 0; int cl = gp.ColumnModel.Columns.Count; string columns = ""; //輸出表頭 取得數據表各列標題,各標題之間以t分割,最后一個列標題后加回車符 for (i = 0; i < cl; i++) { if (i == (cl - 1))//最后一列,加n { if (!gp.ColumnModel.Columns[i].Hidden) { colHeaders += gp.ColumnModel.Columns[i].Header; columns += gp.ColumnModel.Columns[i].DataIndex + ","; } colHeaders += "\n"; } else { if (!gp.ColumnModel.Columns[i].Hidden && gp.ColumnModel.Columns[i].ColumnID != "update") { colHeaders += gp.ColumnModel.Columns[i].Header + "\t"; columns += gp.ColumnModel.Columns[i].DataIndex + ","; } } } resp.Write(colHeaders); if (columns != "") columns = columns.Substring(0, columns.LastIndexOf(",")); string[] columnall = columns.Split(','); cl = columnall.Length; //逐行處理數據 for (int j = 0; j < dt.Rows.Count; j++) { //當前行數據寫入HTTP輸出流,並且置空ls_item以便下行數據 for (i = 0; i < cl; i++) { if (i == (cl - 1)) { ls_item += EditString(dt.Rows[j][columnall[i].ToString()].ToString()) + "\n"; } else { ls_item += EditString(dt.Rows[j][columnall[i].ToString()].ToString()) + "\t"; } } resp.Write(ls_item); ls_item = ""; } Response.Flush(); resp.End(); } /// <summary> /// 處理字符問題 /// </summary> /// <param name="text1"></param> /// <returns></returns> private static string EditString(string text1) { if (text1.IndexOf('\r') != -1) { text1 = text1.Replace('\r', ' '); } if (text1.IndexOf('\n') != -1) { text1 = text1.Replace('\n', ' '); } if (text1.IndexOf('\t') != -1) { text1 = text1.Replace('\t', ' '); } if (text1.IndexOf("'") != -1) { text1 = text1.Replace("'", ""); } if (text1.IndexOf(@"""") != -1) { text1 = text1.Replace(@"""", ""); } return text1; }
導出按鈕
/// <summary> /// 導出Excel /// </summary> protected void ToExcel(object sender, EventArgs e) { DataTable dtSource = _createPageManager.GetTrackBillData(mouldId, 2, "", 1, Cache); ToExcel(gpExec, "test", dtSource, Response); }
前台代碼
<ext:Button ID="btnExportExcel" AutoPostBack="true" OnClick="ToExcel" runat="server" Text="導出Excel"> <Listeners> <Click Fn="saveData" /> </Listeners> </ext:Button>
注意: AutoPostBack="true" 別忘了,否則你懂的
saveData方法
//導出Excel var saveData = function () { GridData.setValue(Ext.encode(gpExec.getRowsValues({selectedOnly : false}))); };
gpExec你的GridPanel主鍵ID
效果:

test.xls


作者:PEPE
出處:http://pepe.cnblogs.com/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
