poi导出excel创建大量单元格格式导致部分格式不生效

今天开发一个功能,用poi导出一份财务相关的报表,其中有过个sheet页,每个sheet页中的每一行都要动态设置单元格格式,代码如下:

Workbook wb = new HSSFWorkbook();
DataFormat df = wb.createDataFormat();
CellStyle cellStyle = wb.createCellStyle();
String format = "动态格式";
cellStyle.setDataFormat(df.getFormat(format));

excel文档的sheet页很多,而且每行都要设置单元格格式,最后导出excel文档后,用office打开部分格式未生效,诡异的是,用wps打开格式是正常的。

最后定位到问题的原因:

exce文档的sheet页很多,而且每行都要设置单元格格式,所以在遍历每一行数据的时候都要创建一个CellStyle,导致一份excel文档保存了大量的CellStyle,而office支持excel中单元格格式数量有限,如果创建太多的话会出现有些格式是不能显示的。

解决方案:

我发现好多行的单元格格式都是重复的,去重后才不到10种格式,解决办法是创建一个map类型的变量,key存储每一行的唯一标记,value存储单元格式,这样相同格式的行引用的都是同一个CellStyle,避免了创建太多的CellStyle,问题完美解决:)。

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值