Easy Excel 导出存在绿色角标问题[返回字段类型是数字,当时使用String来接收]
一、背景
Easy Excel 导出,发现excel 存在大量的绿色角标,很影响美观,如果个人使用可以设置wps或office 忽略检测警告,
但是我是对业主的,所以这一方式对我不适用,只能通过代码的方式解决.
二、实现
通过以下创建一个 ExcelWriter ,实现去绿色角标的关键是 使用easyExcel 自带的拦截器.
1 | ExcelWriter excelWriter = EasyExcel.write(byteArrayOutputStream).registerWriteHandler( new CustomCellWriteHandler()).withTemplate(resource.getInputStream()).build()) |
拦截器写法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package me.zhengjie.modules.util; import cn.hutool.core.util.NumberUtil; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.Head; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; import com.alibaba.excel.write.metadata.holder.WriteTableHolder; import org.apache.poi.ss.usermodel.Cell; public class CustomCellWriteHandler implements CellWriteHandler { @Override public void afterCellDataConverted(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, WriteCellData<?> cellData, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { // 数据为纯数字时,设置单元格类型为数字 String dataValue = cellData.getStringValue(); if (NumberUtil.isNumber(dataValue)) { cellData.setType(CellDataTypeEnum.NUMBER); cellData.setNumberValue(NumberUtil.toBigDecimal(dataValue)); } } } |
原先截图是这样
使用自定义拦截器后(干干净净)
三、参考博客
https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write#%E5%AE%9A%E4%B9%89%E6%8B%A6%E6%88%AA%E5%99%A8
本文作者:独而不孤
本文链接:https://www.cnblogs.com/lcaiqin/p/17789414.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步