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.hqwc.cn/news/197790.html

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

相关文章

移动端获取ua头的值

目录&#xff1a; 1、检测地址2、测试结果 1、检测地址 http://www.ip138.com/useragent/ 2、测试结果 成功的拿到了ua头的值了&#xff0c;亲测可行&#xff01;&#xff01;&#xff01;

三十分钟学会Linux

Linux 一、配置虚拟机 企业级应用&#xff1a;RHEL/CentOS 桌面平台&#xff1a;Ubuntu 开源服务器&#xff1a;CentOS 1.配置网络 路径可以通过TAB键自动补齐 vi /etc/sysconfig/network-scripts/ifcfg-ens332.克隆虚拟机 链接克隆&#xff1a; 当前节点文件夹只存储差…

海外IP代理如何助力跨境电商?

黑五作为下半年年度尤为重要的一个节日&#xff0c;是各大商家的必争之地&#xff0c;那么海外代理是如何帮助跨境商家做好店铺管理和营销呢&#xff1f; 为什么跨境人都关注海外代理&#xff0c;下面我们来进行介绍。 一、什么是海外代理 海外代理就是我们所说的&#xff1a…

从工业互联走向工业AI,国产工业操作系统的机遇和使命

随着科技的飞速发展&#xff0c;工业领域正在经历一场由工业互联网&#xff08;IndustrialInternet&#xff09;到工业AI&#xff08;ArtificialIntelligence&#xff09;的革命性变革。 民用互联网顾名思义即实现人与互联网的连接&#xff0c;服务于人民生活的方方面面。自19…

高并发分布式架构的演进之路

目录 单体架构 应用数据分离架构 应用数据集群架构 读写分离 / 主从分离架构 引⼊缓存⸺冷热分离架构 垂直分库 业务拆分-微服务 单体架构 一个系统初期&#xff0c;我们需要利⽤我们精⼲的技术团队&#xff0c;快速将业务系统投⼊市场进⾏检验&#xff0c;并且可以迅速…

求臻医学受邀参加第三届基因检测行业发展高峰论坛并斩获三项荣誉

2023年11月18日&#xff0c;备受瞩目的第三届基因检测行业发展高峰论坛暨年度评选活动颁奖典礼在广州圆满召开。作为基因检测领域的佼佼者&#xff0c;求臻医学应邀参加了此次高峰论坛并斩获了基因检测行业年度风云企业奖、基因检测行业最具投资价值奖、基因检测行业最佳产品奖…

NX二次开发UF_CAM_ask_doc_template_name 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_doc_template_name Defined in: uf_cam.h int UF_CAM_ask_doc_template_name(const char * * doc_template_filename ) overview 概述 This function provides the name of the file th…

二叉树题目:二叉树的最近公共祖先

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的最近公共祖先 出处&#xff1a;236. 二叉树的最近公共祖先 难度 5 级 题目描述 要求 给定一个二叉树&…

我买了个AI员工,凌晨5点喊我起床,搞了篇全网40万+的爆款

大家好我是二狗&#xff0c;是夕小瑶科技说编辑部的一名作者。 前天早上凌晨5点左右的时候&#xff0c;我被尿憋醒了&#xff0c;起来上了个厕所。 就在我准备躺下接着睡的时候&#xff0c;顺手看了一眼手机。 咦?屏幕上弹出了一条邮件&#x1f4ee;推送&#xff0c;是我们编…

小鸟飞呀飞

欢迎来到程序小院 小鸟飞呀飞 玩法&#xff1a;鼠标控制小鸟飞翔的方向&#xff0c;点击鼠标左键上升&#xff0c;不要让小鸟掉落&#xff0c;从管道中经过&#xff0c;快去飞呀飞哦^^。开始游戏https://www.ormcc.com/play/gameStart/204 html <canvas width"288&quo…

红海营销时代,内容占位的出海品牌更有机会营销占位

#01 品牌出海&#xff1a;内容占位就是品牌营销占位 红海营销时代&#xff0c;内容信息充斥着用户周边。无论线上还是线下&#xff0c;生活工作、休闲娱乐等不同场景内&#xff0c;广告信息均无孔不入。对于用户来说&#xff0c;能记住的品牌或者商品往往寥寥无几。 占位营销…

水声功率放大器在声呐系统中的应用有哪些

水声功率放大器在声呐系统中扮演着重要的角色&#xff0c;其应用涵盖了声呐系统的多个方面。下面就让安泰电子来介绍水声功率放大器在声呐系统中的应用。 发射声波信号&#xff1a;声呐系统通过发射声波信号并接收其回波来探测和测量海洋中的目标物体。水声功率放大器用于放大发…