当前位置: 首页 > news >正文

Easy Excel动态表头的实现

步骤:

1.查找官方API文档理解实现

2.实现融入到代码里面

一:Easy Excel动态头实时生成头写入

动态头实时生成头写入

二:实现

目的:实现表头为,第一列是固定列,第二列为动态生成的时间段的每一天的日期

步骤:

1.查询数据

2.创建表头

3.填充数据

例子:

package com.test.cn.sales.service.impl;import com.alibaba.excel.EasyExcel;import java.io.File;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;public class DynamicExcelExport {public static void main(String[] args) {//1.模拟从数据库中获取数据List<String> keywords = getKeywordsFromDatabase();List<SalesData> salesDataList = getSalesDataFromDatabase();//2.创建表头List<String> dates = generateDateRange("2023-12-30", "2024-02-02");// 根据开始和结束时间动态生成日期List<List<String>> head = new ArrayList<>();head.add(new ArrayList<>(Arrays.asList("关键字"))); // 第一列固定为关键字dates.forEach(o -> head.add(new ArrayList<>(Arrays.asList(o))));//3.填充数据List<List<Object>> data = fillData(keywords, salesDataList, dates);String outputPath = "E:\\output.xlsx"; // 输出路径修改为 E 盘EasyExcel.write(new File(outputPath)).head(head).sheet("Sheet1").doWrite(data);System.out.println("Excel 文件导出成功!输出路径:" + outputPath);}private static List<String> getKeywordsFromDatabase() {// 模拟从数据库中获取关键字return new ArrayList<>(Arrays.asList("关键字1", "关键字2", "关键字3"));}private static List<SalesData> getSalesDataFromDatabase() {// 模拟从数据库中获取销售数据List<SalesData> salesDataList = new ArrayList<>();salesDataList.add(new SalesData("关键字1", 100.00, "2023-12-30"));salesDataList.add(new SalesData("关键字2", 200.00, "2024-02-02"));salesDataList.add(new SalesData("关键字3", 300.00, "2024-02-01"));return salesDataList;}private static List<List<Object>> fillData(List<String> keywords, List<SalesData> salesDataList, List<String> dates) {// 填充数据List<List<Object>> data = new ArrayList<>();for (String keyword : keywords) {List<Object> rowData = new ArrayList<>();rowData.add(keyword); // 添加关键字for (String date : dates) {Double sales = getSalesForKeywordAndDate(keyword, date, salesDataList);rowData.add(sales != null ? sales : 0); // 添加销量数据}data.add(rowData);}return data;}private static Double getSalesForKeywordAndDate(String keyword, String date, List<SalesData> salesDataList) {// 根据关键字和日期从销售数据列表中获取销量数据for (SalesData salesData : salesDataList) {if (salesData.getKeyword().equals(keyword) && salesData.getDate().toString().equals(date)) {return salesData.getSales();}}return null;}/*** 时间段生成** @param startDateStr 开始时间* @param endDateStr   结束时间* @return list*/public static List<String> generateDateRange(String startDateStr, String endDateStr) {List<String> dateRange = new ArrayList<>();DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");LocalDate startDate = LocalDate.parse(startDateStr, formatter);LocalDate endDate = LocalDate.parse(endDateStr, formatter);while (!startDate.isAfter(endDate)) {dateRange.add(startDate.format(formatter));startDate = startDate.plusDays(1);}return dateRange;}
}class SalesData {private String keyword;private Double sales;private String date;public SalesData(String keyword, Double sales, String date) {this.keyword = keyword;this.sales = sales;this.date = date;}public String getKeyword() {return keyword;}public void setKeyword(String keyword) {this.keyword = keyword;}public Double getSales() {return sales;}public void setSales(Double sales) {this.sales = sales;}public String getDate() {return date;}public void setDate(String date) {this.date = date;}
}

导出效果:

相关文章:

Easy Excel动态表头的实现

步骤&#xff1a; 1.查找官方API文档理解实现 2.实现融入到代码里面 一&#xff1a;Easy Excel动态头实时生成头写入 动态头实时生成头写入 二&#xff1a;实现 目的&#xff1a;实现表头为&#xff0c;第一列是固定列&#xff0c;第二列为动态生成的时间段的每一天的日期…...

kvm qemu 优化 windows 虚拟机速度

主要优化磁盘 io 和网络 io 都选为 virtio windows 驱动下载 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.185-2/virtio-win-0.1.185.iso I also had incredibly slow performance with my virtual HDD. The followin…...

银行数据仓库体系实践(18)--数据应用之信用风险建模

信用风险 银行的经营风险的机构&#xff0c;那在第15节也提到了巴塞尔新资本协议对于银行风险的计量和监管要求&#xff0c;其中信用风险是银行经营的主要风险之一&#xff0c;它的管理好坏直接影响到银行的经营利润和稳定经营。信用风险是指交易对手未能履行约定契约中的义务而…...

每日一练 | 华为认证真题练习Day179

1、关于配置STUB区域需要注意的事项中描述正确的是 A. 骨干区域可以配置成为STUB区域 B. 如果将一个区域配置成为STUB区域&#xff0c;则该区域中的所有路由器都要配置STUB区域属性 C. STUB区域可以存在ASBR D. 虚连接可以穿越STUB 2、关于PIM-SM中的HellO报文的描述&#…...

[ubuntu]add-apt-repository 添加以及移除

add-apt-repository是一个用于添加PPA&#xff08;Personal Package Archive&#xff09;存储库的命令。它是Ubuntu和基于Ubuntu的Linux发行版中的apt软件包管理系统的一部分。 PPA存储库允许用户安装和更新软件包&#xff0c;这些软件包不包含在官方软件源中。通过添加PPA存储…...

PySpark(二)RDD基础、RDD常见算子

目录 RDD RDD五大特性 RDD创建 RDD算子 常见的Transformation算子 map flatMap mapValues reduceByKey groupBy filter distinct union join intersection glom groupByKey groupByKey和reduceByKey的区别 ? sortBy sortByKey 常见的action算子 countByKey…...

修改MFC图标

摘要&#xff1a;本文主要讲解了MFC程序窗口图标的添加、任务栏、底部托盘的图标添加&#xff0c;以及所生成的exe文件图标的添加。 ​​​​​​​1、在资源视图添加Icon资源 透明图标怎么制作&#xff1f; 1&#xff09;点击图片》右键&#xff1a;使用画图3D进行编辑 2&a…...

springboot158基于springboot的医院资源管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…...

【算法】枚举——蓝桥杯、日期统计、特殊日期(位数之和)、2023、特殊日期(倍数)、跑步锻炼

文章目录 蓝桥杯日期统计特殊日期&#xff08;位数之和&#xff09;2023特殊日期&#xff08;倍数&#xff09;跑步锻炼 蓝桥杯 日期统计 日期统计 如果暴力枚举100个数的八次循环那就是1016次运算&#xff0c;时间复杂度太高了&#xff0c;好在前四次的2023是确定的&#xf…...

基于flask的个人博客项目从0到1

项目展示(持续完善中…) 首页 文章时间线页面 笔记页面 留言页面 关于页面 后台页面-文章管理 后台页面-笔记页面 后台页面-分类 后台管理-新增标签 后台管理-标签页面 后台管理-新增标签 后台管理-关于页面 2.项目详述 该博客开源地址点击跳转&#xff0c;该项目已部署上…...

基于OpenCV灰度图像转GCode的单向扫描实现

基于OpenCV灰度图像转GCode的单向扫描实现 引言单向扫描存在的问题灰度图像单向扫描代码示例结论 系列文章 ⭐深入理解G0和G1指令&#xff1a;C中的实现与激光雕刻应用⭐基于二值化图像转GCode的单向扫描实现⭐基于二值化图像转GCode的双向扫描实现⭐基于二值化图像转GCode的…...

JAVA生成Word文档

第一步&#xff1a;导入依赖 <!--生成word文档--> <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.10.3</version> </dependency> <!--数字转为汉字大写--> <depend…...

python将.db数据库文件转成Excel文档

python实现.db数据库转Excel 程序实现 上一篇文章程序实现以下功能&#xff1a; 1.读取一个Excel文件,文件名通过函数传参数传入 2.将文件读取的内容保存到一个数据库文件中 3.数据库的文件名以传入的Excel文件的文件名命名 4.将excel文件的工作簿的名字作为数据库的表单名 5…...

[opencvsharp]C#基于Fast算法实现角点检测

角点检测算法有很多&#xff0c;比如Harris角点检测、Shi-Tomas算法、sift算法、SURF算法、ORB算法、BRIEF算法、Fast算法等&#xff0c;今天我们使用C#的opencvsharp库实现Fast角点检测 【算法介绍】 fast算法 Fast(全称Features from accelerated segment test)是一种用于角…...

群晖NAS开启FTP服务结合内网穿透实现公网远程访问本地服务

⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 文章目录 ⛳️ 推荐1. 群晖安装Cpolar2. 创建FTP公网地址3. 开启群晖FTP服务4. 群晖FTP远程连接5. 固定FTP公网地址6. 固定FTP…...

ReactNative实现弧形拖动条

我们直接看效果 先看下面的使用代码 <CircularSlider5step{2}min{0}max{100}radius{100}value{30}onComplete{(changeValue: number) > this.handleEmailSbp(changeValue)}onChange{(changeValue: number) > this.handleEmailDpd(changeValue)}contentContainerStyle{…...

STM32F407移植OpenHarmony笔记9

继上一篇笔记&#xff0c;已经完成liteos内核的基本功能适配。 今天尝试启动OHOS和XTS兼容性测试。 如何启动OHOS&#xff1f; OHOS系统初始化接口是OHOS_SystemInit(void)&#xff0c;在内核初始化完成后&#xff0c;就能调用。 extern void OHOS_SystemInit(void); OHOS_Sys…...

telnet笔记

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、场景二、介绍1.测试端口2.访问百度3. 简单的爬虫 前言 最近telnet命令用的比较多&#xff0c;所以记录一下。 一、场景 ping应该是大家最常用的命令&…...

【考研408】操作系统笔记

文章目录 [toc] 计算机系统概述操作系统的基本概念操作系统的概念和特征操作系统的目标和功能&#xff08;**处理器管理、存储器管理、设备管理、文件管理、向用户提供接口、扩充机器**&#xff09; 操作系统的发展与分类操作系统的运行环境操作系统的运行机制 操作系统的体系结…...

从0开始搭建、上传npm包

从0开始搭建、上传npm包 1、上传一个简单获取水果价格的包创建 vite 项目在项目根目录 src 文件夹中创建 index.ts 文件&#xff0c;文件内容如下&#xff1a;在 main.ts 文件中导入、导出上面创建的方法创建 vite.config.ts 配置文件&#xff0c;文件内容如下配置 package.jso…...

YOLO-v8.3零售行业应用:货架商品识别,库存管理自动化

YOLO-v8.3零售行业应用&#xff1a;货架商品识别&#xff0c;库存管理自动化 1. 零售行业痛点与解决方案 零售行业每天面临数以万计的商品需要管理&#xff0c;传统的人工盘点方式不仅耗时耗力&#xff0c;还容易出现误差。根据行业统计&#xff0c;一家中型超市每月因库存不…...

如何利用 SEO 标题和关键词提高网站可发现性_如何利用 SEO 标题和关键词进行分析和优化

如何利用 SEO 标题和关键词提高网站可发现性 在当今的数字化时代&#xff0c;网站的可发现性直接关系到其流量和成功。在这个竞争激烈的环境中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;成为了提高网站可发现性的关键。其中&#xff0c;SEO标题和关键词的运用尤为重…...

文墨共鸣大模型在网络安全领域的应用:模拟攻击脚本分析与安全报告撰写

文墨共鸣大模型在网络安全领域的应用&#xff1a;模拟攻击脚本分析与安全报告撰写 最近和几个做安全的朋友聊天&#xff0c;他们都在抱怨同一个问题&#xff1a;每天面对海量的告警日志和五花八门的攻击脚本&#xff0c;分析起来耗时费力&#xff0c;写报告更是头疼。技术细节…...

Llama-3.2V-11B-cot效果展示:识别艺术海报中风格与主题逻辑断层

Llama-3.2V-11B-cot效果展示&#xff1a;识别艺术海报中风格与主题逻辑断层 1. 工具介绍 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具。该工具针对双卡4090环境进行了深度优化&#xff0c;特别适合需要分析复杂视觉内容的场景&…...

M2FP在虚拟试衣间的应用:快速识别人体部位,助力电商设计

M2FP在虚拟试衣间的应用&#xff1a;快速识别人体部位&#xff0c;助力电商设计 1. 虚拟试衣间的技术挑战 在电商领域&#xff0c;虚拟试衣技术正在改变用户的购物体验。传统试衣间面临诸多痛点&#xff1a; 用户无法直观看到服装上身效果退换货率高&#xff0c;增加运营成本…...

告别默认丑标签!手把手教你用QGIS 3.28自定义地图标注(附Python脚本)

告别默认丑标签&#xff01;手把手教你用QGIS 3.28自定义地图标注&#xff08;附Python脚本&#xff09; 地图可视化不仅是数据的呈现&#xff0c;更是信息传达的艺术。当你精心准备的地理数据因为默认标签样式而显得平庸时&#xff0c;那种挫败感我深有体会——文字太小看不清…...

Pixel Aurora Engine 环境配置详解:Anaconda创建独立Python运行环境

Pixel Aurora Engine 环境配置详解&#xff1a;Anaconda创建独立Python运行环境 1. 为什么需要独立Python环境 在开始配置Pixel Aurora Engine的开发环境之前&#xff0c;我们先聊聊为什么需要创建独立的Python运行环境。想象一下&#xff0c;你的电脑就像一个大型工具箱&…...

AgentCPM深度研报助手使用技巧:三个参数让报告更专业

AgentCPM深度研报助手使用技巧&#xff1a;三个参数让报告更专业 1. 为什么你的AI研报总像“流水账”&#xff1f;问题可能出在参数上 你用过AI写报告&#xff0c;结果是不是这样&#xff1a;内容看起来都对&#xff0c;但读起来总觉得“差点意思”&#xff1f;结构松散像拼凑…...

深入探索Java JPA中的CriteriaQuery

在Java持久化API(JPA)中,CriteriaQuery 提供了强大的查询功能,允许我们以面向对象的方式构建动态查询。今天我们将通过一个实际的例子,深入探讨如何使用CriteriaQuery来获取特定书籍的最新更新ID。 什么是CriteriaQuery? CriteriaQuery是JPA的一部分,它提供了一种类型…...

探秘《微信朋友圈统计》Android版:深度解析与实用指南

探秘《微信朋友圈统计》Android版&#xff1a;深度解析与实用指南 项目简介 在数字化时代&#xff0c;我们的社交生活离不开各种应用程序&#xff0c;尤其是微信这样的国民级应用。 是一个开源项目&#xff0c;旨在帮助用户统计和分析其在微信朋友圈发布的内容&#xff0c;从而…...