使用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. 【JAVA】pdf转图片

    最近java项目中使用到了pdf转图片的需求,在此记录一下. 1.基于GhostScript p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px ...

  2. 【Swift】IOS开发中自定义转场动画

    在IOS开发中,我们model另外一个控制器的时候,一般都使用默认的转场动画. 其实我们可以自定义一些转场动画.达到不同的转场效果. 步骤如下:(photoBrowser是目标控制器) 1.在源控制器 ...

  3. 一.Kylin的伪分布式安装

    一.伪分布式安装kylin 2018年4月15日 15:06 安装需要的环境 1. hadoop集群环境:由于安装的是CDH5.14.0的版本,所以相关组件都是跟5.14.0相关 2. spark采用 ...

  4. django 模板继承与重写

    1.模板的继承一般用在别人给我们做好的HTML页面,当我们发现有很多的页面都具有相同的部分,这会我们应该考虑怎么能把他们相同的部分给提取出来,提取出来的部分我们作为一个单独的HTML文件叫做base. ...

  5. hdu 5514 Frogs(容斥)

    Frogs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

  6. 【BZOJ1087】【SCOI2005】互不侵犯King

    Description 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. Input 只有一行, ...

  7. 2015 多校联赛 ——HDU5414()

    Problem Description CRB has two strings s and t. In each step, CRB can select arbitrary character c  ...

  8. [BZOJ]1003 物流运输(ZJOI2006)

    挖坑,日常划水. 从BZOJ上的AC人数来看这题确实不难,但做这种题的常见思路让小C决定还是mark一下. Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要n天才 ...

  9. shell基本命令

    linux基本命令和shell基本命令,好多人傻傻分不清. linux基本命令积累如下: pwd:显示当前工作目录 cd:改变当前目录 ls:显示当前目录中所有目录文件和文本文件 ls -F:显示当前 ...

  10. C语言程序设计第四次作业-选择结构

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...