使用extjs肯定少不了使用表格控件,用到表格,领导们(一般)还是惯于使用excel看数据,所以用到extjs表格的技术猿们肯定也会有导出表格excel这一个需求,本文主要针对如何在用extjs将grid表格导出到excel,使用的是前端导出,不涉及后端。


源代码打包下载

本次使用的是github上的一个开源项目Exporter

下载地址:https://github.com/iwiznia/Ext.ux.Exporter

下载之后,可以看到文件目录是这样的(已经是4年前维护的项目了):

将源代码嵌入到应用中

要实现功能的话,这里面的所有文件都要加到项目中的。

然后,需要在使用导出的页面上加入这个js文件的引入:

<script type="text/javascript" src="<%=context %>/pages/yourpathtojsppage/export-all.js"> </script>

在extjs的onready之前引入如下所需:

          Ext.Loader.setConfig({ enabled: true });
Ext.Loader.setPath('Ext.ux.exporter', 'exporter');
Ext.require([
'Ext.ux.exporter.Exporter'
]);

grid定义的时候加上导出excel的入口:

var grid = Ext.create('Ext.grid.Panel', {
frame: true,
title: 'test',
columnLines: true, // 加上表格线
height: 800,
features: [{
ftype: 'summary'
}],
columns: [{yourclolunms}],
store: ytkbbStore,
dockedItems: [{
xtype: 'toolbar',
dock: 'top',
items: [{xtype: 'exporterbutton',store: yourStore}]
}],
renderTo: Ext.getBody()

});

这样,就实现了将导出excel的功能嵌入到了应用程序中。

查看导出按钮以及导出效果

查看grid表格,发现已增加按钮,如图:

时间 费用 kg
2014-03 227 1882.74
2014-04 146 1200.12
2014-05 187 1561.27
2014-06 111 930.18
2014-07 50 4 33.5
2014-08 150 1267.5
2014-09 164 1343.75
2014-10 134 1070.66

导出之后的excel截图如下:

可以看到正确进行了数据导出.

扩展支持sum统计和groupsum分组

技巧:对worksheet.js 进行修改可以调整表格设置,表格内容的出来都是在这里。

//增加合计行

if (this.hasSum){

var style;

Ext.each(this.columns, function(col,index,self) {

style = ‘odd’;

if (col.summaryType==”sum”){

var v = this.store.sum(col.dataIndex);

cells.push(this.buildCell(‘合计: ’ + v, ‘String’, style).render())

}else{

cells.push(this.buildCell(”, ‘String’, style).render())

}

}, this);

rows.push(Ext.String.format(“{0}”, cells.join(“”)));

};

以上是对最后一个统计行的处理。

//分组合计行

buildGroupSumRow: function(me, groupkey, store) {

var style,cells = [];

if (me.stripeRows === true) style = ‘odd’;

type = ‘String’;

var insertRow = function(me){

Ext.each(me.columns, function (col, dataIndex) {

if (!col.groupSumField){

cells.push(me.buildCell(”, type, style).render());

}else{

var abc = store.getGroups().getByKey( groupkey );//sumByGroup(store.groupField);

var sumabc = abc.sum(col.dataIndex);

cells.push(me.buildCell(‘合计: ‘+sumabc, type, style).render());

}

});

return Ext.String.format(“{0}”, cells.join(“”));

};

return insertRow(this);

}

以上是处理分组的,可以实现sum方法合计也可以取平均值等。OK到现在就可以正确的导出表格数据到excel了。

[ExtJS5学习笔记]第三十三节 sencha extjs 5 grid表格导出excel的更多相关文章

  1. [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/42240531 本文作者:sushengmiyan ------------------ ...

  2. [ExtJS5学习笔记]第三十五条 sencha extjs 5 组件查询方法

    一UI前部组件势必更加,我们通常习惯性使用ID获取部件操作的需要.但是,这种方法是extjs推荐么?你有吗extjs利用它来获取组件的推荐方法? 夹 文件夹 extjs的查询组件的API 查询实例 主 ...

  3. [extjs5学习笔记]第三十八节 sencha CMD 6.0.0.220版本安装

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/46740381 简介 sencha cmd 6安装过程不需要UAC控制了对于widnow ...

  4. [ExtJS5学习笔记]第三十一节 sencha extjs 5使用cmd生成的工程部署到tomcat服务器

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/42940883 本文作者:sushengmiyan ------------------ ...

  5. [ExtJS5学习笔记]第三十五节 sencha extjs 5 组件查询方法总结

    一个UI前台组件肯定会比较多,我们通常习惯性的使用ID来获取需要操作的组件,但是这种方法是extjs推荐的么?有没有extjs推荐使用的获取组件的方法呢? 目录 目录 extjs的查询组件的API 查 ...

  6. [ExtJS5学习笔记]第三十四节 sencha extjs 5 grid表格之java后台导出excel

    继上次使用js前端导出excel之后,还有一个主要大家比较关注的是后台实现导出excel,因为本人开发使用的java所以这里使用apache的开源项目poi进行后台excel的导出. 本文目录 本文目 ...

  7. [ExtJS5学习笔记]第三十六节 报表组件mzPivotGrid

    mzPivotGrid 是一个报表组件,采用这个组件之后,可以令你的应用体现更多的价值. 什么是pivot grid 什么是mzPivotGrid 学习资源 与图表组件的融合 什么是pivot gri ...

  8. [ExtJS5学习笔记]第三十二节 sencha extjs 5与struts2的ajax交互配置

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/43487751 本文作者:sushengmiyan ------------------ ...

  9. Dynamic CRM 2013学习笔记(三十二)自定义审批流3 - 节点及实体配置

    上次介绍了<Dynamic CRM 2013学习笔记(十九)自定义审批流1 - 效果演示> 以及如何配置自定义审批流的按钮:<Dynamic CRM 2013学习笔记(二十一)自定义 ...

随机推荐

  1. Python数据抓取_BeautifulSoup模块的使用

    在数据抓取的过程中,我们往往都需要对数据进行处理 本篇文章我们主要来介绍python的HTML和XML的分析库 BeautifulSoup 的官方文档网站如下 https://www.crummy.c ...

  2. python day one 变量,if

    一.变量,常量 变量:用于储存和标记信息在内存中,方便日后被调用.操作和修改 常量:固定不变大的量.字母大写 命名规则: 1.由字母数字下划线组成,命名要有意义,区分大小写. 2.命名建议用下划线分割 ...

  3. Discuz 5.x 6.x 7.x 前台SQL注入漏洞

    来源:http://wooyun.jozxing.cc/static/bugs/wooyun-2014-071516.html 漏洞出现在/include/editpost.inc.php. if($ ...

  4. [Codeforces 297E]Mystic Carvings

    Description 题库链接 题面链接 Solution 这里给出主席树的版本.主席树维护直线的一个端点在前 \(i\) 个端点中,另一个端点在区间内的个数. Code //It is made ...

  5. [测试题]wows

    Description 山山最近在玩一款游戏叫战舰世界(steam 游戏太少了),他被大舰巨炮的魅力折服,于是山山开了一局游戏,这次发现目标是一艘战列舰新墨西哥级,舰桥很高,原本应该打在目标身后的圆形 ...

  6. ●Codevs 4158 残缺的字符串

    题链: http://codevs.cn/problem/4158/ 题解: FFT. 定义两个相同长度的字符串s1,s2的距离为 $$dis(s1,s2)=\sum_{i=0}^{len-1}(s1 ...

  7. 例10-12 *uva1637(概率dp)

    题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率. 思路: 直接用搜索,表示出每摞剩余的牌数,然后利用全概率公式即可(P(A) = p(A|b1)*p(b1)+.. ...

  8. SpringBoot学习之集成mybatis

    一.spring boot集成Mybatis gradle配置: //gradle配置: compile("org.springframework.boot:spring-boot-star ...

  9. 解决win10 VC++6.0 应用程序无法正常运行 0xc0000142

    废话不多说,无法正常运行原因就是win10不兼容中文版的vc,解决方法就是一句话,用英文版的msdev.exe替换中文版的msdev.exe,msdev.exe是vc的启动程序.直接上来教你怎么做.废 ...

  10. Qone 正式开源,使 javascript 支持 .NET LINQ

    Qone 下一代 Web 查询语言,使 javascript 支持 LINQ Github: https://github.com/dntzhang/qone 缘由 最近刚好修改了腾讯文档 Excel ...