news 2026/4/18 7:27:25

使用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/17 2:30:59

计算机毕业设计之springboot餐饮管理系统设计与实现

伴随着我国社会的发展,人民生活质量日益提高。于是对系统进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套餐饮管理系统,帮助餐厅进行餐桌信息、餐桌…

作者头像 李华
网站建设 2026/4/12 15:08:43

计算机小程序毕设实战-基于Springboot+微信小程序家用电器商城系统设计与实现基于小程序+springboot商城系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

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

作者头像 李华
网站建设 2026/4/15 6:42:14

聊聊Java程序员就业现状!

Java面试是一个老生常谈的问题。每年到了金三银四&金九银十这种跳槽黄金季就会有一大批程序员出来面试找工作。流程就是熟悉的网上开始找面试题,面试手册,面试宝典,一收藏就是一大把,看到什么都觉得Nice,看几眼之后…

作者头像 李华
网站建设 2026/4/18 6:46:46

漏洞挖掘完整流程拆解:从信息收集到漏洞提交(入门实操版)

一、前言 很多零基础读者学会漏洞原理后,仍不知道如何动手挖掘——要么毫无头绪,要么遗漏关键环节,导致挖掘效率低下。实际上,漏洞挖掘有标准化的流程可遵循,从信息收集到漏洞提交,每一步都有明确的目标和…

作者头像 李华
网站建设 2026/4/16 10:52:57

入门必备漏洞挖掘工具清单:用法解析与实战场景适配

一、前言 对于漏洞挖掘入门者而言,合适的工具能大幅提升挖掘效率,降低实操门槛。但市面上的安全工具繁多,功能重叠,新手容易陷入“工具焦虑”——盲目下载各类工具,却不知道如何适配场景使用。本文筛选5款入门必备、易…

作者头像 李华
网站建设 2026/4/10 17:40:47

基于 Flutter × OpenHarmony 的驾照学习助手:构建统计分析区域实践

文章目录 基于 Flutter OpenHarmony 的驾照学习助手:构建统计分析区域实践前言背景Flutter OpenHarmony 跨端开发介绍开发核心代码(详细解析)代码解析 心得总结 基于 Flutter OpenHarmony 的驾照学习助手:构建统计分析区域实践…

作者头像 李华