Apache Echarts和POI

目录


Apache ECharts 介绍

入门

绘制一个简单的图表

Apache POI 介绍

通过POI创建Excel文件并且写入文件内容 

通过POI读取Excel文件中的内容

导出Excel表格


Apache ECharts 介绍

Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。

官网地址:Apache ECharts

入门

在 echarts CDN by jsDelivr - A CDN for npm and GitHub 选择 dist/echarts.js,点击并保存为 echarts.js 文件。

在刚才保存 echarts.js 的目录新建一个 index.html 文件,内容如下:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><!-- 引入刚刚下载的 ECharts 文件 --><script src="echarts.js"></script></head>
</html>

绘制一个简单的图表

完整代码如下

<!DOCTYPE html>
<html><head><meta charset="utf-8" /><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src="echarts.js"></script></head><body><!-- 为 ECharts 准备一个定义了宽高的 DOM --><div id="main" style="width: 600px;height:400px;"></div><script type="text/javascript">// 基于准备好的dom,初始化echarts实例var myChart = echarts.init(document.getElementById('main'));// 指定图表的配置项和数据var option = {title: {text: 'ECharts 入门示例'},tooltip: {},legend: {data: ['销量']},xAxis: {data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']},yAxis: {},series: [{name: '销量',type: 'bar',data: [5, 20, 36, 10, 10, 20]}]};// 使用刚指定的配置项和数据显示图表。myChart.setOption(option);</script></body>
</html>

总结:使用Echarts,重点在于研究当前图表所需的数据格式。通常是需要后端提供符合格式要求的动态数据,然后响应给前端来展示图表。

Apache POI 介绍

Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用 POI Java 程序中对Miscrosoft Office各种文件进行读写操作。

一般情况下,POI 都是用于操作 Excel 文件。

Apache POI 的应用场景:

银行网银系统导出交易明细
各种业务系统导出 Excel 报表
批量导入业务数据

通过POI创建Excel文件并且写入文件内容 

通过POI读取Excel文件中的内容

导出Excel表格

 

    /*** 导出运营数据报表* @param response*/@Overridepublic void exportBusinessData(HttpServletResponse response) {//1.查询数据库 获取营业数据LocalDate dateBegin = LocalDate.now().minusDays(30);LocalDate dateEnd = LocalDate.now().minusDays(1);BusinessDataVO businessDataVO = workspaceService.getBusinessData(LocalDateTime.of(dateBegin, LocalTime.MIN), LocalDateTime.of(dateEnd, LocalTime.MAX));//2.通过POI将数据写入到Excel文件中InputStream in = this.getClass().getClassLoader().getResourceAsStream("templete/运营数据报表模板");try {//基于模板文件创建一个新的Excel文件XSSFWorkbook excel= new XSSFWorkbook(in);//获取标签页XSSFSheet sheet = excel.getSheet("Sheet1");//填充数据--时间sheet.getRow(1).getCell(1).setCellValue("时间:" + dateBegin + "至" + dateEnd);XSSFRow row = sheet.getRow(3);row.getCell(2).setCellValue(businessDataVO.getTurnover());row.getCell(4).setCellValue(businessDataVO.getOrderCompletionRate());row.getCell(6).setCellValue(businessDataVO.getNewUsers());row = sheet.getRow(4);row.getCell(2).setCellValue(businessDataVO.getValidOrderCount());row.getCell(4).setCellValue(businessDataVO.getUnitPrice());//填充明细数据for(int i = 0;i<30;i++){LocalDate date = dateBegin.plusDays(1);//查询某一天的营业数据BusinessDataVO businessData = workspaceService.getBusinessData(LocalDateTime.of(date, LocalTime.MIN), LocalDateTime.of(date, LocalTime.MAX));//获得某一行row = sheet.getRow(7+i);row.getCell(1).setCellValue(date.toString());row.getCell(2).setCellValue(businessData.getTurnover());row.getCell(3).setCellValue(businessData.getValidOrderCount());row.getCell(4).setCellValue(businessData.getOrderCompletionRate());row.getCell(5).setCellValue(businessData.getUnitPrice());row.getCell(6).setCellValue(businessData.getNewUsers());}//通过输出流将Excel文件下载到客户端浏览器ServletOutputStream out = response.getOutputStream();excel.write(out);//关闭资源out.close();excel.close();} catch (IOException e) {throw new RuntimeException(e);}}

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

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

相关文章

COLA学习之环境搭建(三)

小伙伴们&#xff0c;你们好&#xff0c;我是老寇&#xff0c;上一节&#xff0c;我们学习了COLA代码规范&#xff0c;继续跟老寇学习COLA环境搭建 首先&#xff0c;打开GitHub&#xff0c;搜索 COLA 请给这个COLA项目点个Star&#xff0c;养成好习惯&#xff0c;然后Fork到自…

【友加畅捷】软件保存/激活云加密/授权码的时候失败。

【问题现象】 畅捷通T1飞跃专业版&#xff0c;在保存云加密的时候提示&#xff1a; 获取加密失败&#xff0c;请检查数据库是否正确连接。 【解决方法】 服务器目录FYDogServer.ini文件&#xff0c;将DogCloud0改成DogCloud1&#xff0c; 然后重新保存。 【问题现象】 U通用…

单链表(数组模拟)

单链表的结构 用数组来模拟的话&#xff0c;需要两个数组&#xff0c;通过下标关联起来 例如&#xff1a; #include <bits/stdc.h>using namespace std;const int N 100010;int e[N]; //储存第i个插入的数的值 int ne[N]; //储存下标为i的next指针 int n; int idx1; int…

docker compose容器编排工具

华子目录 docker compose概述主要功能工作原理docker compose中的管理层docker compose的常用命令参数构建和重新构建服务docker compose的yaml文件一、服务&#xff08;services&#xff09;二、数据卷&#xff08;volumes&#xff09;三、网络&#xff08;networks&#xff0…

科普时刻 | 无线充电热管理:挑战与解决方案

无线充电器可通过电磁感应&#xff0c;在不直接进行电接触的情况下执行电能传输&#xff0c;因此无需繁杂的电缆电线连接&#xff0c;便可为我们的手机、手表、平板电脑以及耳机等设备供电。然而&#xff0c;随着对电子设备更快充电的需求不断增加&#xff0c;热管理对于防止过…

用ChatGPT-o1进行论文内容润色效果怎么样?

目录 1.引导问题发现 2.角色设定 3.整理常问修改 4.提供样例 5.小细节 小编在这篇文章中分享如何充分利用ChatGPT-o1-preview来提升论文润色的技巧。小编将持续跟进最新资源和最新的调研尝试结果&#xff0c;为宝子们补充更多实用的写作技巧。这些技巧将有助于您更有效地利…

数据可视化大屏UI组件库:B端科技感素材PSD

在数据可视化领域&#xff0c;一个出色的大屏UI设计不仅能够准确传达数据背后的信息&#xff0c;更能提升用户的视觉体验。然而&#xff0c;对于UI设计师而言&#xff0c;设计这样一款界面往往面临着寻找合适设计素材的挑战。为了应对这一难题&#xff0c;我们推出了这款数据可…

深度学习中的损失函数

损失函数是深度学习模型训练过程中不可或缺的一部分&#xff0c;是模型预测值与真实值之间差异的客观衡量标准。它们是模型训练的基础&#xff0c;指导算法调整模型参数&#xff0c;以最小化损失并提高预测准确性。它们衡量了模型预测值与真实值的吻合程度。通过最小化这种损失…

#自定义数据类型-简单模拟进程执行

#include <iostream> #include <string> #include <iomanip> using namespace std;//定义一个名为process的结构体&#xff0c;用于表示进程相关信息 //包含进程名、进程ID、进程优先级、进程状态、进程所需CPU时间、进程描述等成员 struct process {string …

【论文阅读】处理器芯片敏捷设计方法:问题与挑战

作者&#xff1a;包云岗老师 包云岗老师是计算机体系结构方向的大牛&#xff0c;推动了体系结构方面的开源事业! 欢迎对本栏目感兴趣的人学习"一生一芯"~ 学习体会&#xff1a; 已有的软硬件生态系统和开发成本制约了对新结构的探索。但目前仍在几种路线上做尝试~ 1…

Redis原理—4.核心原理摘要

大纲(9870字) 1.Redis服务器的Socket网络连接建立 2.Redis多路复用监听与文件事件模型 3.基于队列串行化的文件事件处理机制 4.完整的Redis Server网络通信流程 5.Redis串行化单线程模型为什么能高并发 6.Redis内核级请求处理流程与原理 7.Redis通信协议与内核级请求数据…

十五、K8s计划任务JobCronJob

K8s计划任务CronJob&Job 一、Job可以干什么 Job 控制器用于管理 Pod 对象运行一次性任务,比方说我们对数据库备份,可以直接在 k8s 上启动一个 mysqldump 备份程序,也可以启动一个 pod,这个 pod 专门用来备份用的,备份结束 pod 就可以终止了,不需要重启,而是将 Pod…

一文掌握 OpenGL 几何着色器的使用

学习本文需要具备 OpenGL ES 编程基础,如果看起来比较费劲,可以先看入门文章 OpenGL ES 3.0 从入门到精通系统性学习教程 。 什么是几何着色器 几何着色器(Geometry Shader) OpenGL 管线中的可选着色器阶段,位于顶点着色器(Vertex Shader) 和光栅化阶段 之间。 其核心…

PHP语法学习(第十天)—PHP 表单

各位&#x1f9cd;‍♂️ 周一愉快♪٩(ω)و♪ 我是练小杰&#xff0c;今天开启新的篇章——PHP 表单 另外&#xff0c;想要学习更多PHP语法相关内容点击 “PHP专栏”~~~ 今天由我强哥来带领大家学习~~ 文章目录 PHP 表单简介表单的基本结构表单数据操作PHP 中的 $_POST 和 $_…

卫生巾检测项目、检测标准梳理

为了确保卫生巾在使用过程中具备良好的吸收性、舒适性、透气性&#xff0c;并且符合卫生安全标准&#xff0c;避免对人体健康造成不良影响&#xff0c;需要对其进行一系列检测。 名找我 一、检测项目 外观质量 检查卫生巾的形状、尺寸是否与标识相符&#xff0c;表面是否平整…

架构13-持久化存储

零、文章目录 架构13-持久化存储 1、Kubernetes 存储设计 &#xff08;1&#xff09;存储设计考量 **设计哲学&#xff1a;**Kubernetes 遵循用户通过资源和声明式 API 描述意图&#xff0c;Kubernetes 根据意图完成具体操作。**复杂性&#xff1a;**描述用户的存储意图本身…

使用wol-web通过NAS远程唤醒电脑

相信很多人都有远程开机的需求&#xff0c;有时候需要远程控制家中的电脑办公、玩游戏。远程控制比较好实现&#xff0c;安装类似向日葵的软件即可。而远程开机稍微麻烦一点&#xff0c;有的通过物理开关实现&#xff08;开机棒&#xff09;我们选择远程网络唤醒的方式实现&…

TortoiseGit 图标覆盖设置

TortoiseGit 图标覆盖设置 图标覆盖设置隐藏图标覆盖切换样式 我们安装了小海龟后&#xff0c;它会在仓库目录下给所有图标覆盖上状态标记。 图标覆盖设置 右键菜单打开 &#xff1a;设置 》 图标覆盖。 隐藏图标覆盖 如果不想图标上出现小乌龟的状态标记。直接点这里可以…

Chrome浏览器调用ActiveX控件--allWebOffice控件

背景 allWebOffice控件能够实现在浏览器窗口中在线操作文档的应用&#xff08;阅读、编辑、保存等&#xff09;&#xff0c;支持编辑文档时保留修改痕迹&#xff0c;支持书签位置内容动态填充&#xff0c;支持公文套红&#xff0c;支持文档保护控制等诸多办公功能&#xff0c;…

docker部署redis使用键空间通知订阅

1. redis的键空间通知(keyspace notification) 大概意思是比如时间删除 或者 过期的时候发布的一个通知。通过一个通知来发布或修改一个状态。通常理解为 pub/sub&#xff08;发布/订阅&#xff09;。 键空间通知有两种类型key-space , key-event, 可以理解为key-space对应事件…