使用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. Go/Python/Erlang编程语言对比分析及示例

    本文主要是介绍Go,从语言对比分析的角度切入.之所以选择与Python.Erlang对比,是因为做为高级语言,它们语言特性上有较大的相似性,不过最主要的原因是这几个我比较熟悉. Go的很多语言特性借鉴 ...

  2. WebApi-路由机制

    一.WebApi路由机制是什么? 路由机制通俗点来说:其实就是WebApi框架将用户在浏览器中输入的Url地址和路由表中的路由进行匹配,并根据最终匹配的路由去寻找并匹配相应的Controller和Ac ...

  3. pyqt5 动画学习(四) 旋转动画,使用QGraphicsView让自己的控件旋转起来

    今天学有所成,赶紧记下今天的成果 之前三篇文章分别演示了空间的大小改变,移动,及颜色变化.在后续研究旋转的过程中即为艰难 如果你是使用pyqt4,那么使用QGraphicsItemAnimation便 ...

  4. python 装饰器统计某个函数的运行时间

    import datetime def count_time(func): def int_time(*args, **kwargs): start_time = datetime.datetime. ...

  5. win10 jkd配置注意事项

    更换新的电脑预装win10家庭版,根据常规方法配置jdk8后运行javac提示:不是内部或外部命令,也不是可运行的程序或批处理文件. 1 设置变量classpath时前面有个点(完成这一步后javac ...

  6. [HAOI 2011]Problem b

    Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. Input 第一行一个整数 ...

  7. [ZJOI2013]丽洁体

    题目描述 平时的练习和考试中,我们经常会碰上这样的题:命题人给出一个例句,要我们类比着写句子.这种往往被称为仿写的题,不单单出现在小学生的考试中,也有时会出现在中考中.许多同学都喜欢做这种题,因为较其 ...

  8. 洛谷P2572 [SCOI2010]序列操作

    线段树 pushdown写的很浪~ #include<cstdio> #include<cstdlib> #include<algorithm> #include& ...

  9. ●UVA 10674 Tangents

    题链: https://vjudge.net/problem/UVA-10674 题解: 计算几何,求两个圆的公切线. <算法竞赛入门经典——训练指南>P266,讲得很清楚的. 大致是分为 ...

  10. ●BZOJ 3796 Mushroom追妹纸

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=3796 题解: 题意:    给出三个串 A,B,C    找出一个最长串 S,    使得 ...