news 2026/4/19 13:07: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/18 9:46:01

基于springboot + vue蘑菇百科系统

蘑菇百科 目录 基于springboot vue蘑菇百科系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取: 基于springboot vue蘑菇百科系统 一、前言 博主介绍:✌️大…

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

国自然基金申请书撰写新思路:如何合理利用AI提高本子竞争力?

最近许多学术同仁询问我:如何合理利用AI辅助撰写国家自然科学基金(NSFC)申请书? 其实,用好AI的前提是严守红线:基金委明令禁止使用生成式人工智能直接生成申报材料。核心原则就一条:AI只能是辅助工具,而不是代写者。 界限在哪?请看这张“红绿灯”清单: 🟢 绿灯区…

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

【计算机毕业设计案例】基于SpringBoot的4S店试驾平台系统微信小程序基于springboot的4S店试驾平台小程序(程序+文档+讲解+定制)

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

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

宏智树AI:ChatGPT学术版驱动,AI5.0重构学术写作全生态

引言:当顶尖 AI 技术遇见学术创作,低效内卷从此终结 在学术探索的道路上,你是否曾陷入这样的困境:选题反复纠结、文献梳理杂乱、数据分析繁琐、格式排版耗时?宏智树 AI(官网:www.hzsxueshu.com…

作者头像 李华