POI模板生成EXCEL 64000 style in a .xlsx Workbook

业务场景:

项目需要生成多个EXCEL表格,每个表格根据数据列表的大小动态增加Excel的行数,要保证新插入行的样式与模板完全一致

考虑使用以下方法保证样式的统一

复制代码
cloneStyleFrom(templateStyle);

但是由于数据量比较大,抛出如下的异常

复制代码
java.lang.IllegalStateException: The maximum number of Cell Styles was exceeded. You can define up to 64000 style in a .xlsx Workbook

解决办法:

使用缓存把样式保存起来,如果缓存中取不到再次通过cloneStyleFrom(templateStyle)赋值;

然后新的异常出现了

复制代码
This Style does not belong to the supplied Workbook Styles Source. Are you trying to assign a style from one workbook to the cell of a different workbook?

最终的解决办法:

在存入缓存的key中添加Workbook的HashCode值,保证只取对应的Workbook的Style缓存,最终问题得以解决!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

相关推荐
Croa-vo18 小时前
Optiver OA 气球节模拟题:拆解系统建模的核心逻辑,附避坑指南
java·数据结构·算法·leetcode·职场和发展
悟能不能悟18 小时前
Java CheckFailedException会去获取message.properties的内容吗
java·开发语言
shang_xs18 小时前
Java 25 ScopedValue - 作用域内安全访问的一种实现
java·开发语言·安全
小途软件18 小时前
基于深度学习的驾驶人情绪识别
java·人工智能·pytorch·python·深度学习·语言模型
小白学大数据18 小时前
Java 异步爬虫高效获取小红书短视频内容
java·开发语言·爬虫·python·音视频
我命由我1234518 小时前
Android Jetpack Compose - Compose 重组、AlertDialog、LazyColumn、Column 与 Row
android·java·java-ee·kotlin·android studio·android jetpack·android-studio
愤怒的代码18 小时前
在 Android 中执行 View.invalidate() 方法后经历了什么
android·java·kotlin
memgLIFE19 小时前
SQL 优化方法详解(1)
java·数据库·sql
2201_7578308719 小时前
Bean原理篇
java·开发语言
小宇的天下19 小时前
Calibre 3Dstack--每日一个命令day 6 [process和export layout](3-6)
java·前端·数据库