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软件 ...
随机推荐
- shell中的交互模式:expect
在shell开发中,我们连接FTP或者passwd或sudo等操作时,需要手动输入密码.对于自动化而言,这显然是不合适的.而expect的强交互模式解决了这个问题.工作中偶有涉及到这个,个人也是简单的 ...
- ZJOI2015 幻想乡战略游戏 动态点分治_树链剖分_未调完
Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...
- Hadoop 技术笔记
Flume与Kafka Flume 是一个分布式,可靠的,可用的服务,有效的收集,聚合和移动海量的日志数据.它有一个简单而灵活的架构,基于流数据流.具有很好的冗余和容错性,以及可靠性和多故障转移和恢复 ...
- Oracle 知识积累
1.oracle存储过程中is和as的区别 在存储过程(PROCEDURE)和函数(FUNCTION)中没有区别,在视图(VIEW)中只能用AS不能用IS,在游标(CURSOR)中只能用IS不能用AS ...
- 洛谷P1914 小书童——密码
题目背景 某蒟蒻迷上了"小书童",有一天登陆时忘记密码了(他没绑定邮箱or手机),于是便把问题抛给了神犇你. 题目描述 蒟蒻虽然忘记密码,但他还记得密码是由一串字母组成.且密码是由 ...
- ZOJ 3874 Permutation Graph (分治NTT优化DP)
题面:vjudge传送门 ZOJ传送门 题目大意:给你一个排列,如果两个数构成了逆序对,就在他们之间连一条无向边,这样很多数会构成一个联通块.现在给出联通块内点的编号,求所有可能的排列数 推来推去容易 ...
- Problem 6
Problem 6 # Problem_6.py """ The sum of the squares of the first ten natural numbers ...
- VS2015使用C++编写DLL,并在C#环境中调用【转】
说明:本文是本人在学习封装DLL时看到的,觉得说得很清楚,为了防止忘记,特意复制下来学习用,原文链接:https://blog.csdn.net/songyi160/article/details/5 ...
- 【codeforces 719E】Sasha and Array
[题目链接]:http://codeforces.com/contest/719/problem/E [题意] 给你一个数列,有两种操作1 l r x 给[l,r]区间上的数加上x, 2 l r 询问 ...
- HDU 3579 线性同余方程组
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...