echarts的下载为excel小工具
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小工具的更多相关文章
- 批量下载google 字体小工具
在项目开发中,我们经常用外国的框架,如bootstrap.nodejs.angularjs 时候经常要配套google 字体等资源, 但是由于国内网络原因,经常框架跑起来,网页在请求google 字体 ...
- python+xlsxwriter+PIL自动压图贴图到Excel小工具
一.环境 windows10/mac + python3.6 python第三方库 xlsxwriter.PIL.argparse 二.需求 1.运行每条测试case成功与否都需要把截图放在img文件 ...
- AWS成本估算的相关小工具
1.AWS-partner :云势数据做的在线小工具,有微信版本可以使用,但是涉及的服务很少,更新慢,型号缺,界面不友好.不是很理想,连接如下: https://www.goclouds.cn ...
- 懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法
在开发的过程中,我们为了节约时间,往往会将大量重复机械的代码封装,考虑代码的复用性,这样我们可以节约很多时间来做别的事情.最近跳槽到一节webform开发的公司,主要是开发自己公司用的ERP.开始因为 ...
- 【游戏开发】Excel表格批量转换成CSV的小工具
一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...
- 懒人小工具1:winform自动生成Model,Insert,Select,Delete以及导出Excel的方法
懒人小工具2:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法 github地址:https://github.com/Jimmey-Jiang/J ...
- 分享一个小工具:Excel表高速转换成JSON字符串
在游戏项目中一般都须要由策划制作大量的游戏内容,当中非常大一部分是使用Excel表来制作的.于是程序就须要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Offi ...
- 懒人小工具:T4自动生成Model,Insert,Select,Delete以及导出Excel的方法
之前写了篇文章,懒人小工具:[自动生成Model,Insert,Select,Delete以及导出Excel的方法](http://www.jianshu.com/p/d5b11589174a),但是 ...
- Windows 7环境下网站性能测试小工具 Apache Bench 和 Webbench使用和下载
1.简要说明: Apache Bench 是Apache的网站性能测试小程序,Windows平台下的程序名简称ab.exe,要想获得这个80k的可执行程序,用户需要下载整个Apache Httpd软件 ...
随机推荐
- 封装自己的jquery框架
jQuery is a fast small JavaScript library 如何封装自己的jQuery <script> // 这里使用沙箱模式,可以防止全局污染 (functio ...
- [tyvj 1071] LCIS
题目描述 熊大妈的奶牛在小沐沐的熏陶下开始研究信息题目.小沐沐先让奶牛研究了最长上升子序列,再让他们研究了最长公共子序列,现在又让他们要研究最长公共上升子序列了. 小沐沐说,对于两个串A,B,如果它们 ...
- [NoiPlus2016]天天爱跑步
巨坑 树剖学的好啊!---sfailsth 把一段路径拆成两段,向上和S->LCA,向下LCA->T 用维护重链什么的操作搞一下. sfailsth学长真不容易啊...考场上rush了4. ...
- docker 私有仓库的两种方式
1.使用官方默认的registry镜像构建本地仓库 这种方式适用于小规模的镜像仓库储存,没有Ui界面 (1)docker pull registry (2)docker run -d -p 5000: ...
- Supervisor 从入门到放弃
前言 Supervisor是一个客户端/服务器系统,允许其用户在类UNIX操作系统上控制许多进程.(官方解释) 简单点来讲,就是一个监控脚本运行的工具,不过他可以统一化管理,laravel的队列文档上 ...
- 简洁又快速地处理集合——Java8 Stream(下)
上一篇文章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇文章我们开始实战,讲解流的各个方法以及各种操作 没有看过上篇文章的可以先点击进去学习一下 简洁又快速地处理集 ...
- MySQL 触发器 -1
MySQL包含对触发器的支持.触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行. 创建触发器 在MySQL中,创建触发器语法如下 ...
- C++ Primer 学习笔记与思考_3 ---头文件那些事儿(extern)
(一)extern在头文件里的使用方法 由于头文件包括在多个源文件里.而且变量的定义仅仅能出现一次,所以在头文件里. 仅仅能够声明不能够出现定义. 我们能够在头文件里用extern声明全局变量,这样在 ...
- ExtJs--16--Ext.override()方法专门用来重写对象的方法
Ext.onReady(function(){ /** * Ext.override()方法专门用来重写对象的方法 */ //定义个类 Ext.define("U",{ //该类的 ...
- 初识cocos2dx——入门第一篇
享受"啪"的按下Enter的快感. (by云风) cocos2dx是不是个toy引擎,不同的人有不同的看法.可是你不得不承认它非常受欢迎.好多非常火的手游使用的就是cocos2dx ...