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(); } /// /// 处理字符问题 /// /// /// 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; }
导出按钮
/// /// 导出Excel /// 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" />关注打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?
立即登录/注册


微信扫码登录