一、在程序中增加附件中js文件的引用:

二、定义一个导出Excel文件的函数:

function ExportExcel(gridPanel,config) {if (gridPanel) {var tmpStore = gridPanel.getStore();var tmpExportContent = '';//以下处理分页grid数据导出的问题,从服务器中获取所有数据,需要考虑性能var tmpParam = Ext.ux.constructor(tmpStore.lastOptions);//此处克隆了原网格数据源的参数信息//此处作者原先为Ext.ux.clone(tmpStore.lastOptions)方法,但不好使if (tmpParam && tmpParam.params) {delete (tmpParam.params[tmpStore.paramNames.start]);//删除分页参数delete (tmpParam.params[tmpStore.paramNames.limit]);}var tmpAllStore = new Ext.data.GroupingStore({//重新定义一个数据源proxy:tmpStore.proxy,reader:tmpStore.reader});tmpAllStore.load(tmpParam);//获取所有数据tmpAllStore.on('load', function(store) {config.store = store;tmpExportContent = gridPanel.getExcelXml(false, config);//此方法用到了一中的扩展if (Ext.isIE || Ext.isSafari || Ext.isSafari2 || Ext.isSafari3) {//在这几种浏览器中才需要,IE8测试不能直接下载了if (!Ext.fly('frmDummy')) {var frm = document.createElement('form');frm.id = 'frmDummy';frm.name = id;frm.className = 'x-hidden';document.body.appendChild(frm);}Ext.Ajax.request({url: 'service/ExportServicePage.aspx',//将生成的xml发送到服务器端method: 'POST',form: Ext.fly('frmDummy'),callback: function(o, s, r) {//alert(r.responseText);},isUpload: true,params: { ExportContent: tmpExportContent, ExportFile: gridPanel.id + '.xls' }});} else {document.location = 'data:application/vnd.ms-excel;base64,' + Base64.encode(tmpExportContent);}});}
};

ExportServicePage.aspx后台代码:

  protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){if (Request["ExportContent"] != ""){string tmpFileName="export.xls";string tmpContent = Request["ExportContent"];//获取传递上来的文件内容if (Request["ExportFile"] != ""){tmpFileName = Request["ExportFile"];//获取传递上来的文件名tmpFileName = System.Web.HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(tmpFileName));//处理中文文件名的情况                    }Response.Write("<script>document.close();</script>");Response.Clear();Response.Buffer = true;Response.ContentType = "application/vnd.ms-excel";Response.AddHeader("Content-Disposition", "attachment;filename=\"" + tmpFileName + "\"");Response.Charset = "";this.EnableViewState = false;System.IO.StringWriter tmpSW = new System.IO.StringWriter();System.Web.UI.HtmlTextWriter tmpHTW = new System.Web.UI.HtmlTextWriter(tmpSW);tmpHTW.WriteLine(tmpContent);Response.Write(tmpSW.ToString());Response.End();}}}

其中前台用到的clone函数代码:(我用的时候没用着)

Ext.ux.clone = function(obj) {if (obj == null || typeof (obj) != 'object')return obj;if (Ext.isDate(obj))return obj.clone();var cloneArray = function(arr) {var len = arr.length;var out = [];if (len > 0) {for (var i = 0; i < len; ++i)out[i] = Ext.ux.clone(arr[i]);}return out;};var c = new obj.constructor();for (var prop in obj) {var p = obj[prop];if (Ext.isArray(p))c[prop] = cloneArray(p);else if (typeof p == 'object')c[prop] = Ext.ux.clone(p);elsec[prop] = p;}return c;};

三、需要导出时就可以这么使用了:
var config={
      store: null,//因为后续可能需要处理分页,因此此处一般不直接传递GridPanel的数据源
      title: ‘’//需要显示标题
    };
ExportExcel(MyGrid,config);

已知的不足:在FF下导出时,总是以文件名为XXXXX.xls.part的方式,不知道为什么,呵呵。

还有需要注意的一点,因为从客户端往服务器端传递xml字符串时,可能会因为安全性问题导致内容传递不上去,如果出现这种情况,可以在web.config的system.web节中增加<pages validaterequest="false"></pages>,如果不想针对所有页面都用此配置,也可以在指定页面设置就可以了,详细请参考MSDN。

来源:一起Ext
原文地址:http://www.17ext.com/showtopic-3008.aspx

Extjs 从grid中导出Excel表格。后台为C#(绝对好用)相关推荐

  1. Extjs 从grid中导出Excel表格。后台为C#(绝对好用)(按照自己的需求修改版本)...

    最近生成Excel表格,稍微得到一点新的体会,特此更新自己开发时候的版本. 开发工具:VS2005 数据库:oracle10.1 浏览器:firefox3.5.9 第一步,web层aspx文件 需要载 ...

  2. vue中导出Excel表格

    vue中导出Excel表格 项目中我们可能会碰到导出Excel文件的需求,一般后台管理系统中居多,将table中展示的数据导出保存到本地.当然我们也可以通过一些处理来修改要导出的数据格式,具体需求具体 ...

  3. ag-grid-angular 中导出Excel表格 及其配置

    ag-grid-angular 中导出Excel表 及其配置 api 常用params 详解 自定义页眉和页脚 定义样式 样式参数详解 api exportDataAsExcel(params) 常用 ...

  4. node.js/VUE项目中导出excel表格的多种实现方法(D2admin适用)

    方法一.vue+js-xlsx 1.vue项目内安装两个依赖:xlsx.file-saver  npm install xlsx --save  npm install file-saver --sa ...

  5. vue中导出excel表格(支持导出图片)

    //安装插件 npm install js-table2excel //引入插件 import table2excel from 'js-table2excel' //tableData数据 tabl ...

  6. vue3中导出excel表格

    首先安装两个包 "xlsx": "^0.17.4", "file-saver": "^2.0.5" 直接复制放到pack ...

  7. Thinkphp导入、导出Excel表格

    Thinkphp中导出Excel表格具体方法如下: 1.在ThinkPHP/Library/Vendor目录下新建文件夹PHPExcel,将excel文件解压后放入文件夹中. (下载地址:链接:htt ...

  8. java中使用jxl导出Excel表格详细通用步骤

    该方法一般接收两个参数,response和要导出的表格内容的list. 一般我们将数据库的数据查询出来在页面进行展示,根据用户需求,可能需要对页面数据进行导出. 此时只要将展示之前查询所得的数据放入s ...

  9. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

最新文章

  1. ROS 安装kinect驱动+测试
  2. 无线路由器发起ARP攻击,致使网络中断,这是为什么?
  3. 游戏中用到的设计模式
  4. Linux下的Backlight子系统
  5. *** Python版一键安装脚本
  6. Windows高精度微秒级(并发)定时器实现
  7. [有限元]利用虚位移和虚力的定义、对称性推导弹性力学公式
  8. 高端轻奢国风美妆海报模板,东方美到极致
  9. Web框架简介+第一个例子(博主萌新,哪里写的不好希望大家指出,谢谢)
  10. 从俄罗斯方块,迈向强化学习大门
  11. Spring Boot 中使用WebJars
  12. Ajax json 数据格式
  13. Hessian——轻量级的二进制协议远程调用实现方案
  14. Maven下载安装配置详细过程
  15. 演绎、归纳与前言结构——Leo鉴书83
  16. 【GNSS】GREAT多频多系统GREAT-UPD开源代码-第三章 中间及结果文件格式
  17. djyvp计算机电缆参数,DJYVP计算机电缆2x2x1.5型号规格含义
  18. 简单的手机html页面源代码,手机页面h5的简单demo
  19. 迪杰斯特拉算法(dijkstra)_朴素版_堆优化版
  20. 车载异构网络接入matlab,车载移动异构无线网络架构及关键技术

热门文章

  1. SpriteKit游戏开发适配iPad/iPhone6/7/8/Plus及iPhoneX的尺寸及安全区域
  2. 读《构建之法》第四,十七章有感
  3. [BZOJ] 1610: [Usaco2008 Feb]Line连线游戏
  4. Spring-mvc设置@RequestMapping标签更改返回头及@RequestMapping简述
  5. ubuntu和windows上pip和windows上conda国内源更新module
  6. Mvc Webapi+Fiddler调试 (WebAPI 一)
  7. ClippingNode实现新手引导高亮裁切
  8. UIAlertControl的使用对比与UIAlertView和UIActionSheet
  9. iOS 数据库操作(使用FMDB)
  10. Link节点类的改进——通过构建freelist自行管理内存