excel-gen.js 导出excel 功能

目录

概要

整体架构流程

html部分:

js部分:

json部分:

小结


概要

功能会使用到如下插件:

  • jszip.min.js
  • FileSaver.js

  • jquery.min.js

  • excel-gen.js

  • highcharts.js

  • exporting.js

  • export_data.js

主要是highcharts图表数据导出为excel,highcharts本身自带导出功能和额外使用excel-gen.js编写导出功能

整体架构流程

废话不多说,直接上代码:

html部分:

<div><div class="DStab_mTitle mb-26"><h3 id="DStab_mTitle">标题</h3></div><div class="fjb chart_top px-15"><div class="DStab_con_head"><span class="fl  mb-10">统计周期=:</span><select name="select fl" id="startYearSpan" class="fl mb-10"><option value="2011年">2011年</option><option value="2012年">2012年</option><option value="2013年">2013年</option><option value="2014年">2014年</option><option value="2015年">2015年</option><option value="2016年">2016年</option><option value="2017年">2017年</option><option value="2018年">2018年</option><option value="2019年">2019年</option><option value="2020年">2020年</option><option value="2021年">2021年</option><option value="2022年">2022年</option></select><span class="pr-10 pl-10 fl  mb-10">至</span><select name="select" id="endYearSpan" class="fl mr-15  mb-10"><option value="2012年">2012年</option><option value="2013年">2013年</option><option value="2014年">2014年</option><option value="2015年">2015年</option><option value="2016年">2016年</option><option value="2017年">2017年</option><option value="2018年">2018年</option><option value="2019年">2019年</option><option value="2020年">2020年</option><option value="2021年">2021年</option><option value="2022年" selected="">2022年</option></select><button class="btn fl  mb-10" id="ajaxConfirm">查询</button></div><a href="javascript:;" target="_self" class="save_btn toExcel">导出Excel表格</a></div><div id="container0" ></div><div id="table_toExcel"><table border="1" cellspacing="0" cellpadding="0" wclassth="100%" id="table1excel"></table></div></div>

js部分:

var globalData = null; //备份
var globalDataCopy = null; //深拷贝
var url = "./static/json/tm_sjkf_data.json";
var containerId = "container0";
var dom = $("#" + containerId);
var chartsName = $(".tab_aside_list li.current").data("name");var deepCopy = function (obj) {return JSON.parse(JSON.stringify(obj));
};$.ajax({type: "get",url: url,dataType: "json",async: false,success: function (json) {globalData = json;globalDataCopy = deepCopy(json);},error: function (xhr) { },
});
function createChart(dom,{ titleText, subtitleText, categories, yAxis, series }
) {$("#DStab_mTitle").html(titleText);dom.highcharts({legend: {aligin: "center",verticalAlign: "top",backgroundColor:(Highcharts.theme && Highcharts.theme.legendBackgroundColor) ||"#FFFFFF",},credits: {enabled: false,},chart: {zoomType: "xy",},title: {text: false,},subtitle: {text: subtitleText,},xAxis: [{text: "年份",categories: categories,crosshair: true,},],yAxis: yAxis,tooltip: {shared: true,},lang: {printChart: "打印图表",downloadPNG: "下载JPEG 图片",downloadJPEG: "下载JPEG文档",downloadPDF: "下载PDF 图片",downloadSVG: "下载SVG 矢量图",contextButtonTitle: "下载图片",downloadCSV: "下载CSV图片",downloadXLS: "下载XLS图片",viewData: "数据表格 ",openInCloud: "查看更多数据类型",},series: series,});
}
// 导出数据为Excel文件
function drawTable(title) {var yearList = dom.highcharts().options.xAxis[0].categories;var seriesList = dom.highcharts().options.series;var len = seriesList.length + 1;var tableDom = null;// tableDom += "<tr><th>" + title + "</tr></th></tr>";var table_th = "<th>日期</th>";seriesList.forEach((v, k) => {table_th += "<th>" + v.name + "</th>";});tableDom += "<tr>" + table_th + "</tr>";//内容yearList.forEach((v, k) => {tableDom += "<tr>";tableDom += "<td>" + v + "</td>";seriesList.forEach((series_v) => {var value = series_v.data[k] || "";tableDom += "<td>" + value + "</td>";});tableDom += "</tr>";});$("#table_toExcel").find("table").html(tableDom);
}//初始化
var chart = createChart(dom, globalDataCopy[chartsName]);
// 获取对应的年份数据,改id就行
var yearList = dom.highcharts().options.xAxis[0].categories;
// 查询的点击事件 改id
$("#ajaxConfirm").click(function () {// 获取开始年份 改变量名 改idvar startY = $("#startYearSpan option:selected").val();// 获取结束年份 改变量名 改idvar endY = $("#endYearSpan option:selected").val();var startY_index = yearList.indexOf(startY);var endY_index = yearList.indexOf(endY) + 1;// 根据年份筛取更改年份数据 改id 和3个年份变量dom.highcharts().options.xAxis[0].categories = yearList.slice(startY_index,endY_index);var chartsName = $(".tab_aside_list li.current").data("name");var seriesList = globalData[chartsName].series;// 更改数据datafor (let index = 0; index < seriesList.length; index++) {const element = seriesList[index];dom.highcharts().options.series[index].data = element.data.slice(startY_index,endY_index);}// 重新渲染图表chart = Highcharts.chart(containerId, dom.highcharts().options);
});var dom_toexcel = $(".toExcel");
//导出表格
dom_toexcel.click(function () {var title = $("#DStab_mTitle").html();drawTable(title);var excel = new ExcelGen({src_id: "table1excel",show_header: true,filename: title,extension: "xlsx",});excel.generate();
});

json部分:

{"rk": {"titleText": "主标题","subtitle": "副标题","categories": ["2011年","2012年","2013年","2014年","2015年","2016年","2017年","2018年","2019年","2020年","2021年","2022年"],"yAxis": [{"labels": {"format": "{value}万人","style": {"color": "Highcharts.getOptions().colors[0]"}},"title": {"text": "人口 (万人)","style": {"color": "Highcharts.getOptions().colors[0]"}}}],"series": [{"name": "户籍人口 (万人)","type": "column","data": [167, 167.42, 163.85, 164.24, 162.8, 163.36, 161.08, 160.92, 160.66,158.89, 158.02],"tooltip": {"valueSuffix": "万人"}},{"name": "常住人口 (万人)","type": "column","color": "Highcharts.getOptions().colors[2]","data": [136.9, 133.9, 128.9, 129.16, 129.2, 128.66, 128.35, 127.35, 124.74,115.86, 110.58, 110.74],"tooltip": {"valueSuffix": "万人"}}]}}

小结

1.引入:

  <script src="./static/js/jquery.min.js"></script><script src="./static/js/highcharts.js"></script><script src="./static/js/exporting.js"></script><script src="./static/js/export_data.js"></script><script src="./static/js/jszip.min.js"></script><script src="./static/js/FileSaver.js"></script><script src="./static/js/excel-gen.js"></script>

2.资源提供:

本文章有对应资源绑定

3.结果展示:

导出展示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/150327.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏服务器怎么挑选细节与技巧深度解析

随着数字娱乐的迅速崛起&#xff0c;游戏不仅成为了全球数亿人的休闲爱好&#xff0c;同时也催生了一系列关于游戏体验优化的需求。游戏服务器作为游戏体验的核心支柱&#xff0c;其性能好坏直接影响到玩家的游戏体验。本文章旨在详细探讨游戏服务器的挑选技巧与注意事项&#…

Stable Diffusion进阶玩法说明

之前章节介绍了Stable Diffusion的入门&#xff0c;介绍了文生图的魅力&#xff0c;可以生成很多漂亮的照片&#xff0c;非常棒 传送门&#xff1a; Stable Diffusion新手村-我们一起完成AI绘画-CSDN博客 那我们今天就进一步讲讲这个Stable Diffusion还能做些什么&#xff0c; …

笔记55:长短期记忆网络 LSTM

本地笔记地址&#xff1a;D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章&#xff1a;动手学深度学习~现代循环神经网络 a a a a a a a a a

【数据结构】链表的八种形态

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 链表的三大"性状" 一.带头链表和不带头链表 头指针与头结点的异同 头指针 头结点 二.循环链表和非循环链表 三.双向链表和单向链表 链表的八大形态 结语…

Linux之进程概念(一)

&#x1f4d8;北尘_&#xff1a;个人主页 &#x1f30e;个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上&#xff0c;不忘来时的初心 文章目录 一、冯诺依曼体系结构二、操作系统(Operator System)1、概念2、设计OS的目的3、定位4、如何理…

二百零五、Flume——数据流监控工具Ganglia单机版安装以及使用Ganglia监控Flume任务的数据流(附流程截图)

一、目的 Flume采集Kafka的数据流需要实时监控&#xff0c;这时就需要用到监控工具Ganglia 二、Ganglia简介 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 &#xff08;一&#xff09;第一部分&#xff1a;gmond gmond&#xff08;Ganglia Monitoring Daemon&#xff09;…

Postman启动问题:Could not open Postman

Postman启动问题&#xff1a;Could not open Postman 状态&#xff0c;在单击Postman之后一直在转圈圈&#xff0c;无法正常启动。 细心的朋友会发现&#xff0c;右下角 会经常出现防火墙关闭等提示信息&#xff0c;表示该程序&#xff0c;在向外链接。 Error Could not open…

基于单片机体温脉搏检测控制系统及源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、DS18B20传感器检测体温。 3、红外对接管采集心率值送到液晶1602显示。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /lcd1602初始化设置*/ void init_1602() { write_com(0x38); //显示…

苍穹外卖项目笔记(2)

1 Nginx 反向代理和负载均衡 1.1 概念 【Tips】可以看到前端请求地址和后端接口地址并不匹配&#xff0c;这里涉及到 nginx 反向代理 &#xff0c;就是将前端发送的动态请求由 nginx 转发到后端服务器 使用 nginx 作反向代理的好处&#xff1a; 提高访问速度&#xff08;在请…

系列一、堆里面的分区:Eden、From、To、老年代各自的特点

一、堆里面的分区&#xff1a;Eden、From、To、老年代各自的特点 堆是对象共享的区域&#xff0c;也是垃圾回收器主要工作的地方。主要分为新生区、养老区和元空间&#xff0c;而这三块地方中GC主要工作在新生区和养老区&#xff0c;其中新生区占1/3、养老区占2/3&#xff0c;新…

开源与闭源软件的辩论:对大模型技术发展的影响

目录 前言1 开源软件的优缺点1.1 开源软件的优点1.2 开源软件的缺点和挑战 2 闭源软件的优缺点2.1 闭源软件的优点2.2 闭源软件的缺点和挑战 3 大模型发展会走向哪一边结语 前言 近期&#xff0c;特斯拉CEO马斯克公开表示&#xff1a;OpenAI不该闭源&#xff0c;自家首款聊天机…

Qt http

文章目录 前言1. 定义的接口2.connect信号槽3. get4. get 下载文件5. post 总结 前言 /* 1.请求报文&#xff1a; 请求报文是由客户端发送给服务器&#xff0c;用于请求特定资源或执行特定操作。它由以下几个部分组成&#xff1a; 请求行&#xff1a;描述了请求的方法、目标资源…

海外代理IP如何找到靠谱的?

现在市面上有很多代理服务商&#xff0c;大家可以根据自己的需求选择一个适合自己业务的的IP代理服务商&#xff0c;现在也有一些免费的&#xff0c;但如果力求稳定安全&#xff0c;还是选择付费的。 这里提醒一句&#xff0c;在买代理IP时最好找这种可以免费试用的&#xff0…

虾皮台湾站点如何选品

在互联网时代&#xff0c;电商平台成为了越来越多人购物的首选。虾皮作为台湾地区最大的电商平台之一&#xff0c;为商家提供了良好的销售渠道。然而&#xff0c;在虾皮上选择适合的商品对于商家来说并不容易。本文将介绍如何通过虾皮选品工具-知虾来查看台湾地区各大类目的热销…

⑩⑤【DB】详解MySQL存储过程:变量、游标、存储函数、循环,判断语句、参数传递..

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ MySQL存储过程 1. 介绍2. 使用3. 变量①系统变…

Polygon zkEVM协议治理、升级及其流程

1. 引言 随着Polygon社区开发者和内部团队的测试深入&#xff0c;当前版本的Polygon zkEVM不可避免地需更新和某些升级。 为激励开发者对Polygon zkEVM做battle-test&#xff0c;已启动了bug-bounty&#xff1a; Rewards by Threat Level 由于zk-Rollup生态系统还处于萌芽阶…

【libGDX】ApplicationAdapter生命周期

1 前言 libGDX 中&#xff0c;用户自定义的渲染窗口需要继承 ApplicationAdapter 类&#xff0c;ApplicationAdapter 实现了 ApplicationListener 接口&#xff0c;但实现的方法都是空方法&#xff0c;方法释义如下。 public interface ApplicationListener {// 应用首次创建时…

sql注入 [极客大挑战 2019]HardSQL1

打开题目 输入1或者1"&#xff0c;页面均回显NO,Wrong username password&#xff01;&#xff01;&#xff01; 那我们输入1 试试万能密码 1 or 11 # 输入1 and 12 # 输入1 union select 1,2,3 # 输入1 ununionion seselectlect 1,2,3 # 输入1 # 输入1# 页面依旧回…

transformer学习资料

一、NLP 自然语言处理 NLP 是机器学习在语言学领域的研究&#xff0c;专注于理解与人类语言相关的一切。NLP 的目标不仅是要理解每个单独的单词含义&#xff0c;而且也要理解这些单词与之相关联的上下文之间的意思。 常见的NLP 任务列表&#xff1a; 对整句的分类&#xff1…

Vue.js2+Cesium1.103.0 十四、绘制视锥,并可实时调整视锥姿态

Vue.js2Cesium1.103.0 十四、绘制视锥&#xff0c;并可实时调整视锥姿态 Demo <template><divid"cesium-container"style"width: 100%; height: 100%;"><divclass"control"style"position: absolute;right: 50px;top: 50px…