CompletableFuture实现Excel 多个sheet页批量导出

CompletableFuture实现Excel 多个sheet页批量导出

文章目录

  • CompletableFuture实现Excel 多个sheet页批量导出
      • 为什么不能直接合并文件或Sheet?
      • 我的方案合理性
    • 1. 操作实现步骤
      • 1.1、导入所需要的依赖
      • 1.2 、Excel 导入导出对象
      • 1.3、异步生成 Excel 文件到指定路径
      • 1.4、合并多个 Excel 文件的 Sheet(保留样式)
      • 1.5、Excel 导出接口

最近在做多数据导出的时候,需要将数据导出在不同的数据sheet页中,苦于没有第三方工具包那能直接处理,于是就自己手写了一个
注意:我查一系列的操作excel的官网发现EasyExcel、JExcelApi、apachePoi等也没有“直接合并文件”API。
哪怕是 Apache POI 提供的 Workbook.cloneSheet() 复制当前工作簿内部的 Sheet,但不能跨文件复制。

必须通过代码遍历 Sheet、Row、Cell,把内容和样式挨个复制,才算是“合并”。

为什么不能直接合并文件或Sheet?

  • Excel 文件不是简单的文本或数据文件,是一个 ZIP 压缩的多部分复合结构。
  • 每个 Sheet、样式、字体、图片等都有自己独立的 XML 文件和关系映射。
  • 直接“拼接”文件会导致结构错乱,打不开或出错。
  • 需要按POI的数据模型逐一复制内容和样式。

我的方案合理性

  • 我目前用 copySheet 按行复制,是最标准、最稳定的做法。
  • 也可以尝试扩展,比如复制合并单元格、列宽、数据验证、图片等(需要额外代码),让合并更

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

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

相关文章

搭建本地 Git 服务器

以下是搭建本地 Git 服务器的通用步骤,支持团队协作或私有仓库管理:方法 1:基于 SSH 的简单部署(适合小团队) 步骤 1:安装 Git 在服务器上安装 Git(以 Ubuntu 为例): sud…

【Matplotlib】中文显示问题

中文显示问题本地Mac上作图,可以方便地实现中文字体显示。比如在Jupter中,通过:方法一:不下载字体库即可实现中文显示 (MAC)plt.rcParams[font.family][Arial Unicode MS]方法二:下载指定字体训即可实现中文显示plt.rc…

从“单体崩溃”到“稳定如山”:Java 构建高可用、低耦合架构实战指南

引言: 你是否经历过这样的痛苦?某个模块突然异常,整个系统瞬间崩盘,排查日志堆积如山,客户投诉不断。系统耦合严重、容错性差,成了上线最忌惮的“隐雷”。 而今天,我们要带你深入剖析如何通过事…

人工智能正在学习自我提升的方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Numpy基础(广播机制)

广播机制 Numpy的Universal functions中要求输入的数组shape是一致的,当数组的shape不相等 时,则会使用广播机制。不过,调整数组使得shape一样,需要满足一定的规则,否则将 出错。这些规则可归纳为以下4条。 1&#xff…

reuse: for booting my spring project with mvn in Windows command line

boot.bat echo off setlocal enabledelayedexpansion:: 定义帮助信息 set HELP_MSG使用方法: %0 [选项,可选-m,-j,-h] [参数...]:: 默认启动方式为 mvn set MODEmvn set ARGS:: 解析命令行参数 :parse_args if "%~1""" goto end_parseif "%~1"&q…

NodeJs学习日志(4):路由合并_环境配置_常用文件目录

路由合并_环境配置_常用文件目录 路由合并 // routes/routes.js const express require(express); const router express.Router();// 合并子路由 var indexRouter require(../routes/index); var usersRouter require(../routes/users);router.use(/, indexRouter); route…

✨TRAE SOLO + Holopix AI | 轻松实现 “虚假广告“-转[特殊字符]割草小游戏

引言 😶 两周前 (7.21) Trae-国际版 正式发布「SOLO」模式,需要 Pro 账户,邀请码一度 “难求”,海鲜市场还有人挂出 500块的 “天价”,这都能炒?我是无法理解的🤷‍♀️,目前一个月…

redis集群-本地环境

* Linux 本地集群:3主3从yum install -y gccyum install -y wgetyum install -y vimwget http://download.redis.io/releases/redis-7.2.5.tar.gztar -zxvf redis-7.2.5.tar.gzcd redis-7.2.5/makemake PREFIX/usr/local/redis install# 配置系统环境变量vim /etc/p…

海关 瑞数 失信企业 逆向 分析 后缀 rs

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!部分python代码headers {Accept: appl…

用 Postman 的 Tests 脚本,这行代码断言接口返回,自动化测试省一半事

本文聚焦 Postman 的 Tests 脚本在接口自动化测试中的核心作用,阐述如何通过编写 Tests 脚本实现接口返回的自动断言,从而大幅提升测试效率。文中详细介绍了 Tests 脚本的基础语法、常用断言方法、实战案例及优化技巧,涵盖从简单响应状态码校…

7、西门子PLC基础术语:数据单位、存储区域、寻址方式、字节序

一、数据单位(数据长度类型)术语名称位数所占字节说明Bit位1 bit1/8 Byte最小数据单位(0或1)BByte 字节8 bit1 Byte字节单位WWord 字16 bit2 Byte通常用于整数、状态字等DWDouble Word 双字32 bit4 Byte常用于浮点、双整数 1双字 …

大型动作模型LAM:让企业重复任务实现80%效率提升的AI技术架构与实现方案

现代企业运营中,重复性任务的自动化处理已成为提升组织效率的核心需求。从基础数据录入到复杂工作流管理,企业持续寻求技术创新来降低人工成本、减少操作错误,并将人力资源重新配置到更具价值的战略性工作中。大型动作模型(Large …

部署Web UI自动化测试平台:SeleniumFlaskTester

1. Python环境准备 推荐Python3.11,可从https://www.python.org/downloads/release/python-3119/ 下载,见下图: 安装后,cmd命令行查看版本:python --version 2. 下载源码包 从 https://gitee.com/ligaopan/SeleniumFlaskTester…

计算机网络:到底什么是可变长子网掩码VLSM?

VLSM 是可变长子网掩码,对应的是 FLSM(固定长子网掩码) FLSM 中,子网掩码是固定的,比如一个 C 类地址用 255.255.255.128(/25)划分,每个子网只能有 126 台主机,但如果实际需要的主机数不同,比如有的子网需要 20 台,有的需要 50 台,FLSM 会导致地址浪费。所以 VLSM …

太极行业观察:从传统技艺到数字化转型的演变|创客匠人

太极拳作为中华传统文化的重要组成部分,在全球范围内具有广泛影响力。目前全球太极习练者已超过一亿人,仅中国大陆就有约千万固定练习者。每年与太极相关的赛事、培训、教学、养生旅游等活动,形成了数百亿元的市场规模。尽管如此,…

Kafka服务端NIO操作原理解析(二)

Kafka系列文章 基于Kafka2.1解读Producer原理 基于Kafka2.1解读Consumer原理 Kafka服务端NIO操作原理解析(一) 文章目录Kafka系列文章前言一、基本认知二、Acceptor的主体流程2.1 run方法源码2.2 acceptNewConnections方法源码2.3 主体逻辑流程示意图三…

当服务器负载过高时该怎么办?

当服务器出现负载过高时,要对内存、网络等硬件设备进行查看,其中CPU是重中之重,对CPU使用率进行查看和了解,确定哪些进程占用了大量CPU资源,如果是某个应用程序进程导致CPU高负载,需分析该程序是否存在算法…

跨境电商增长突围:多维变局下的战略重构与技术赋能

在全球化商业浪潮与数字技术迭代的双重驱动下,跨境电商行业正经历前所未有的变革。平台规则的动态调整、市场需求的非线性波动、技术工具的持续革新,共同构成了复杂多变的竞争格局。对于卖家而言,如何在不确定性中锚定增长路径,已…

软件运行时 ffmpeg.dll 丢失怎么办?从原因排查到完美修复的完整方案

在计算机的软件生态系统中,ffmpeg.dll 扮演着一个至关重要却又常被普通用户忽视的角色。这个看似普通的文件,实际上是众多多媒体相关软件能够正常运行的基石之一。当你的视频剪辑软件突然无法导入特定格式的视频,或者心爱的游戏在启动时弹出令…