news 2026/5/1 7:10:05

使用EasyExcel对某列做特定样式,样式失效

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用EasyExcel对某列做特定样式,样式失效

简单说两句

✨ 少壮不努力,老大加班加到让你怀疑人生!!!

作者:银氨溶液

CSDN个人主页:银氨溶液

🎉欢迎关注🔎点赞👍收藏⭐️留言📝

场景浅尝

最近,我正在做一个导出excel的需求,这个需求里面有一点要求对excel里面的某列做特定的样式展示,好,就这一句话,我的噩梦开始了~

问题追溯

我对某列做特定样式修改后,无论我使用什么样的方法,最后的excel文件里面这行样式依旧没有任何改变

可以先看一下伪代码:

// 1. EasyExcel 开始写数据 for (row in data) { for (col in columns) { Cell cell = createCell(row, col); // 2. 你的自定义 Handler 处理某一列 if (col == targetCol) { // 你设置了自己的样式 CellStyle myStyle = buildHyperlinkStyle(workbook); cell.setCellStyle(myStyle); cell.setHyperlink(hyperlink); } } } // 3. EasyExcel 内部的样式策略开始生效 for (row in allRows) { for (col in allColumns) { Cell cell = getCell(row, col); // EasyExcel统一覆盖内容区域的样式 CellStyle contentStyle = buildContentStyle(workbook); cell.setCellStyle(contentStyle); // 这一步把你之前设置的样式覆盖掉了 } } // 4. 文件写出 writeExcelFile();

其实原因很简单,我这儿是因为有一个全局的样式覆盖了我之前对某个列单独做的样式,就算是你把自定义的handler放到统一样式后面去处理,其实也会被覆盖,因为EasyExcel 并不是按“注册顺序”严格执行所有 Handler

举个通俗的比喻

你用 POI 原生 setCellStyle,就像在 Excel 里手动给每个格子调样式,但有别人在后面又给你批量“刷回去”,你就白忙活了。

解决办法

所以解决办法其实也很简单,既然始终会被覆盖,那就在全局样式处理完之后,再单独去对这列做样式处理,所以直接使用EasyExcel的样式体系来处理,来看伪代码:

// 推荐做法 for (row in data) { for (col in columns) { Cell cell = createCell(row, col); if (col == targetCol) { // 用 EasyExcel 的样式体系(WriteCellStyle) WriteCellData cellData = getCellData(cell); WriteCellStyle myStyle = new WriteCellStyle(); myStyle.setWriteFont(蓝色下划线字体); cellData.setWriteCellStyle(myStyle); cell.setHyperlink(hyperlink); } } } // EasyExcel 最后统一应用所有 WriteCellStyle,不会覆盖你自定义的

什么是 WriteCellStyle?

WriteCellStyle是 EasyExcel 提供的一个“样式描述对象”,
你可以把它理解为「描述 Excel 单元格样式的模板」,比如字体、颜色、下划线、居中、边框等。

它不是 POI 的 CellStyle 对象,也不是直接应用到 Excel 的样式,
而是 EasyExcel 用来收集每个单元格想要什么样式
等到所有数据都写完时,EasyExcel 会自动帮你把这些样式应用到对应的单元格上。

为什么 WriteCellStyle 能实现你想要的效果?

EasyExcel 的样式覆盖机制:

  • EasyExcel 会收集所有的 WriteCellStyle(你可以通过 Handler 或策略写到 WriteCellData 里)

  • 最后统一遍历所有单元格,把 WriteCellStyle 转成 POI 的 CellStyle,一起应用到 Excel 文件

  • 这样就能保证你的自定义样式不会被其他策略覆盖掉

【都看到这了,点赞加关注,收藏不迷路呀~】😚😚

💬

✨ 一直努力让自己发光发亮的银氨啊~💖 爱生活,更爱分享,分享各种学习干货!🌈 感谢关注,关注了你就是我的超级粉丝啦!🔒 以下内容仅对你可见~

作者:银氨溶液

CSDN个人主页:银氨溶液

🎉欢迎关注🔎点赞👍收藏⭐️留言📝

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 10:56:45

小程序毕设选题推荐:基于springboot的新能源汽车4S店试驾平台小程序基于微信平台的4S店管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/4/18 5:16:30

CNN - GRU回归预测电力负荷

CNN-GRU回归预测预测分析,多输入,单输出。 Matlab作图,预测电力负荷,数据来源于电工杯,联系宝贝送。 代码注释清晰,替换数据即可。 。 最近研究了用 CNN - GRU 模型进行回归预测,目标是预测电力…

作者头像 李华
网站建设 2026/4/23 15:16:25

工业互联网解决了什么工业痛点?

工业互联网通过数据驱动和智能技术,有效解决了传统工业中的多个核心痛点,为企业带来了效率、质量和模式的革新。以下是工业互联网解决的主要工业痛点及相应的解决方案,结合实际案例进行佐证,以体现其应用价值。1. 解决“生产黑箱”…

作者头像 李华
网站建设 2026/4/20 3:39:09

中国30米坡度数据集

坡度是地表单元陡缓的程度,用以表示斜坡的斜度,常用于标记丘陵、屋顶和道路的斜坡的陡峭程度。中国30米坡度数据是根据NASA和METI共同发布的ASTER GDEM v3进行拼接、转换、坡度计算等处理得到的,格式为栅格,空间参考系为WGS_1984_…

作者头像 李华