天增的博客
首页
博客
  • 分布式解决方案
  • Java并发工具包
  • redis
  • LeetCode
  • 系统设计
  • JVM体系
Github (opens new window)
Rss (opens new window)
  • zh-CN
  • en-US
首页
博客
  • 分布式解决方案
  • Java并发工具包
  • redis
  • LeetCode
  • 系统设计
  • JVM体系
Github (opens new window)
Rss (opens new window)
  • zh-CN
  • en-US
  • post
2024-05-30

POI修改CellStyle不起效

# POI修改CellStyle不起效

# 问题

def style = cell.getCellStyle()
style.setVerticalAlignment(VerticalAlignment.CENTER)
style.setAlignment(HorizontalAlignment.CENTER)
cell.setCellStyle(style)

我想将所有单元格的设置成垂直和水平居中,但是这么修改并不起效。

问题出在了,在Excel中这些单元格get出来的样式是全局的不是针对单个单元格的,因此并不会起效。

原因是由于在Excel的设计里面,这种样式抽取成共有变量可以节约存储成本,包括在Excel中每个文字都是单独进行存储的,在用的时候是引用的方式进行处理,类似于Java中的常量池一般,极大节约存储空间。

# 解决

只需要调用clone方法,void cloneStyleFrom(CellStyle var1)​将原本的cell上面的样式复制一份出来

这样就能够起效了

def style = workbook.createCellStyle()
style.cloneStyleFrom(cell.getCellStyle())
style.setVerticalAlignment(VerticalAlignment.CENTER)
style.setAlignment(HorizontalAlignment.CENTER)
cell.setCellStyle(style)

‍

最近更新
01
以 root 身份启动 transmission-daemon
12-13
02
Debian系统安装qbittorrent-nox
12-09
03
LXC Debain12安装zerotier并实现局域网自动nat转发
07-29
更多文章>
Theme by Vdoing | Copyright © 2015-2024 天增 | 苏ICP备16037388号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式