echarts自带有下载为图片的功能,但是没有下载为excel表格的功能,个人觉得下载为表格更为需要,所以写了个工具,此工具应用有局限性,只能用于柱形图和折线图,option的series要是如下形式:

  

      series: [
{
name: '初级人才',
type: 'bar',
data: [['部门1',1500], ['部门2',1500], ['部门3',1500], ['部门4',1500], ['部门5',1500], ['部门6',1500], ['部门7',1500], ['部门8',1500], ['部门9',1500], ['部门11',1500], ['部门12',1500], ['部门13',1500], ['部门14',1500], ['部门15',1500]]
},
{
name: '中级人才',
type: 'bar',
data: [['部门1',1500], ['部门2',1500], ['部门3',1500], ['部门4',1500], ['部门5',1500], ['部门6',1500], ['部门7',1500], ['部门8',1500], ['部门9',1500], ['部门11',1500], ['部门12',1500], ['部门13',1500], ['部门14',1500], ['部门15',1500]] },
{
name: '高级人才',
type: 'bar',
data: [['部门1',1500], ['部门2',1500], ['部门3',1500], ['部门4',1500], ['部门5',1500], ['部门6',1500], ['部门7',1500], ['部门8',1500], ['部门9',1500], ['部门11',1500], ['部门12',1500], ['部门13',1500], ['部门14',1500], ['部门15',1500]]
}
]

  该工具主要是利用series来生成excel所以对series的格式有一定要求。

  在toolbox的feature属性中增加该工具配置:

  

          /*自定义工具,下载为xls*/
myExcl:{
show:true,
title:'下载为excel',
icon:'path://M877.6 289.5L656 68.4c-2.8-2.8-6.6-4.4-10.6-4.4h-463c-22.3 0-40.5 18.1-40.5 40.4v815.2c0 22.3 18.1 40.4 40.5 40.4h659.1c22.3 0 40.5-18.1 40.5-40.4V300.1c0-4-1.6-7.8-4.4-10.6zM641.2 96.1l207.6 207.2H641.2V96.1zM841.5 930h-659c-5.8 0-10.5-4.7-10.5-10.4V104.4c0-5.6 4.8-10.4 10.5-10.4h428.8v224.3c0 8.3 6.7 15 15 15H852v586.3c0 5.7-4.7 10.4-10.5 10.4z M447.9 520.2h-32l-44.8 74.2c-3.3 5.7-6 11-8.3 16.1h-0.6c-2.5-5.9-5-11-7.6-15.4l-42.8-74.9h-34.3l66.3 107.7-72.1 108.6H306l49.8-81.3c3.2-6.8 4.8-10.6 5-11.3h0.7c2.1 5.6 3.8 9.3 4.9 11.2l48.4 81.4h34l-68.7-109.1 67.8-107.2zM509 520.2h-28v216.3h114.4v-24.7H509zM693.9 616.5c-19.3-9.5-31.9-17-37.6-22.5-5.8-5.5-8.7-12.6-8.7-21.4 0-9.9 4.2-17.6 12.5-23.1s19.1-8.3 32.4-8.3c20 0 36.5 4.5 49.5 13.5v-30.4c-10.1-5.2-25.9-7.8-47.4-7.8-22 0-40.3 5.3-54.7 15.8-14.5 10.5-21.7 24.8-21.7 42.7 0 11.9 3.5 22.5 10.4 31.8s21.2 19.3 43 30.1c15.7 7.7 26.4 13.5 32 17.2 5.7 3.7 10.2 8 13.4 12.8 3.3 4.8 4.9 10.3 4.9 16.3 0 21.6-15.2 32.4-45.6 32.4-10 0-20.5-1.9-31.6-5.6-11.1-3.7-20-8.5-26.6-14.2v31.8c5.2 3.5 13.5 6.5 25 8.9 11.4 2.4 21.4 3.6 30 3.6 24.5 0 43.7-5.1 57.5-15.2 13.8-10.1 20.7-24.7 20.7-43.7 0-12.7-4.2-24.1-12.7-34.2-8.6-10.2-23.4-20.3-44.7-30.5z',
onclick:function (data) {
var $form=document.createElement("form");
var $input=document.createElement("input");
$form.method="post";
$form.action="down.do"
$form.style="display:none;"
$input.name='data';
$input.type="textarea";
$input.value=JSONUtil.toJson(data.getOption().series);//将series转成JSON字符串
$form.append($input);
$("body").append($form)
$form.submit();
$form.remove();
}
}

        后台如下写:

  

/**
* @Title down
* @Descript :下载统计数据
* @date : 2017-09-05 15:26:39
* @param
* @return java.lang.String
* @throws
* @version V1.0
*/
@RequestMapping("down.do")
public String down(HttpServletRequest request , HttpServletResponse response) throws IOException {
List list=getJsonStrToList(request.getParameter("data"));
response.setHeader("Content-Disposition",
"attachment;filename=" +
new String( ("人员统计" + ".xls").getBytes(),
"iso-8859-1"));
response.setContentType("application/vnd.ms-excel");
HSSFWorkbook workbook=echartsToExcel(list);
workbook.write(response.getOutputStream());
return null;
} /**
* @Title echartsToExcel
* @Descript :柱形echarts转成excel
* @date : 2017-09-07 22:20:45
* @param
* @return org.apache.poi.hssf.usermodel.HSSFWorkbook
* @throws
* @version V1.0
*/
private HSSFWorkbook echartsToExcel(List list){
HSSFWorkbook workbook=new HSSFWorkbook();
HSSFSheet sheet=workbook.createSheet("人员统计");
HSSFRow row;
HSSFCell cell;
HSSFCell fCell;
HSSFRow fRow;
List data;
List listTemp;
Map map;
fRow=sheet.createRow(0);
for(int i=0;i<list.size();i++){
map=(Map)list.get(i);
row=sheet.createRow(i+1);
cell=row.createCell(0);
if(fRow.getCell(0)==null){
fCell=fRow.createCell(0);
fCell.setCellValue("");
}
cell.setCellValue(map.get("name").toString());
data=ValidateUtil.isEmpty(map.get("data"))?null:(List)map.get("data");
if(ValidateUtil.isEmpty(data))continue;
for(int j =0;j<data.size();j++){
listTemp=ValidateUtil.isEmpty(data.get(j))?null: (List) data.get(j);
if(ValidateUtil.isEmpty(listTemp))continue;
if(fRow.getCell(j+1)==null){
fCell=fRow.createCell(j+1);
fCell.setCellValue(listTemp.get(0).toString());
}
cell=row.createCell(j+1);
cell.setCellValue(Long.parseLong(listTemp.get(1).toString()));
}
}
return workbook;
}

echarts的下载为excel小工具的更多相关文章

  1. 批量下载google 字体小工具

    在项目开发中,我们经常用外国的框架,如bootstrap.nodejs.angularjs 时候经常要配套google 字体等资源, 但是由于国内网络原因,经常框架跑起来,网页在请求google 字体 ...

  2. python+xlsxwriter+PIL自动压图贴图到Excel小工具

    一.环境 windows10/mac + python3.6 python第三方库 xlsxwriter.PIL.argparse 二.需求 1.运行每条测试case成功与否都需要把截图放在img文件 ...

  3. AWS成本估算的相关小工具

    1.AWS-partner :云势数据做的在线小工具,有微信版本可以使用,但是涉及的服务很少,更新慢,型号缺,界面不友好.不是很理想,连接如下:     https://www.goclouds.cn ...

  4. 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法

    在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...

  5. 【游戏开发】Excel表格批量转换成CSV的小工具

    一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...

  6. 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法

       懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法    github地址:https://github.com/Jimmey-Jiang/J ...

  7. 分享一个小工具:Excel表高速转换成JSON字符串

    在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...

  8. 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法

    之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...

  9. Windows 7环境下网站性能测试小工具 Apache Bench 和 Webbench使用和下载

    1.简要说明: Apache Bench 是Apache的网站性能测试小程序,Windows平台下的程序名简称ab.exe,要想获得这个80k的可执行程序,用户需要下载整个Apache Httpd软件 ...

随机推荐

  1. C#学习 第九节

    构造器 1.构造器(constructor)是类型的成员之一: 2.狭义的构造器是指“实例构造器”(instance constructor): 3.构造器的调用 student stu =new s ...

  2. html页面之间传值问题

    1.如再A页面(A.html)通过window.open(B.html?code=11)或者通过其他方式跳转到其它html页面时: 可通过以下方式进行传递参数. //B.html页面function ...

  3. [洛谷 P1967] 货车运输 (最大生成树 lca)

    题目描述 A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 q 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多 ...

  4. 30分钟精通React今年最劲爆的新特性——React Hooks

    你还在为该使用无状态组件(Function)还是有状态组件(Class)而烦恼吗? --拥有了hooks,你再也不需要写Class了,你的所有组件都将是Function. 你还在为搞不清使用哪个生命周 ...

  5. linux下RTP编程(使用JRTPLIB)(转)

    流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议.IP电话等应用场合的技术基础.RTP是进行实时流媒体传输的标准协议和关键 ...

  6. 作为深度学习最强框架的TensorFlow如何进行时序预测!(转)

    作为深度学习最强框架的TensorFlow如何进行时序预测! BigQuant 2 个月前 摘要: 2017年深度学习框架关注度排名tensorflow以绝对的优势占领榜首,本文通过一个小例子介绍了T ...

  7. linux网络监控脚本

    http://www.51testing.com/html/92/77492-828434.html

  8. 洛谷——P2440 木材加工

    https://www.luogu.org/problem/show?pid=2440#sub 题目背景 要保护环境 题目描述 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木 ...

  9. 压力工具代码及epoll使用

    服务器编程 P347的压力工具代码不错,对于epoll用的好,可以看.

  10. Android 四大组件学习之BroadcastReceiver四

    本节学习系统中特殊的广播接收者. 我们前面几节不是说了,当广播接受者一旦注冊到系统中,当系统发送的广播和你注冊的广播的action匹配时,系统就会启动广播接收者所在的进程.除非用户手动停止广播接收者所 ...