当前位置: 首页 > news >正文

若依-@Excel新增注解numberFormat

@Excel注解中原本的scale会四舍五入小数,导致进度丢失

在这里插入图片描述

想要的效果

  • 显示的时候保留两个小数
  • 真正的数值是保留之前的数值

在这里插入图片描述

还原过程

若以中有一個專門的工具类,用来处理excel的

在这里插入图片描述

  • 找到EXCEL导出方法exportExcel()
  • 找到writeSheet,写表格的方法
  • 找到填充数据的方法fillExcelData
  • 找到添加单元格的方法addCell
  • 找到设置 单元格VO的方法 setCellVo在这里插入图片描述

在这里插入图片描述

对于NUMBERIC类型的,但是设置format的属性值

    /*** 设置单元格信息** @param value 单元格值* @param attr  注解相关* @param cell  单元格信息*/public void setCellVo(Object value, Excel attr, Cell cell) {if (ColumnType.STRING == attr.cellType()) {String cellValue = Convert.toStr(value);// 对于任何以表达式触发字符 =-+@开头的单元格,直接使用tab字符作为前缀,防止CSV注入。if (StringUtils.startsWithAny(cellValue, FORMULA_STR)) {cellValue = RegExUtils.replaceFirst(cellValue, FORMULA_REGEX_STR, "\t$0");}if (value instanceof Collection && StringUtils.equals("[]", cellValue)) {cellValue = StringUtils.EMPTY;}cell.setCellValue(StringUtils.isNull(cellValue) ? attr.defaultValue() : cellValue + attr.suffix());} else if (ColumnType.NUMERIC == attr.cellType()) {if (StringUtils.isNotNull(value)) {if (StringUtils.isNotEmpty(attr.numberFormat())) {CellStyle numberCellStyle = cell.getCellStyle();DataFormat dataFormat = this.wb.createDataFormat();numberCellStyle.setDataFormat(dataFormat.getFormat(attr.numberFormat()));cell.setCellStyle(numberCellStyle);}cell.setCellValue(StringUtils.contains(Convert.toStr(value), ".") ? Convert.toDouble(value) : Convert.toInt(value));}} else if (ColumnType.IMAGE == attr.cellType()) {ClientAnchor anchor = new XSSFClientAnchor(0, 0, 0, 0, (short) cell.getColumnIndex(), cell.getRow().getRowNum(), (short) (cell.getColumnIndex() + 1), cell.getRow().getRowNum() + 1);String imagePath = Convert.toStr(value);if (StringUtils.isNotEmpty(imagePath)) {byte[] data = ImageUtils.getImage(imagePath);getDrawingPatriarch(cell.getSheet()).createPicture(anchor,cell.getSheet().getWorkbook().addPicture(data, getImageType(data)));}}}

别忘了在注解@Excel中加上我们的自定义注解

在这里插入图片描述

    /*** 数字类型格式*/public String numberFormat() default "";

使用

在对应的@Excel注解中,新增一个属性numberFormat

    /*** 总重*/@Excel(name = "总重", cellType = Excel.ColumnType.NUMERIC, align = HorizontalAlignment.RIGHT,numberFormat = "#,##0.00")private BigDecimal totalWeight;
http://www.lryc.cn/news/539457.html

相关文章:

  • 网络安全行业有哪些公司
  • 存储区域网络(SAN)管理
  • 如何使用Spark SQL进行复杂的数据查询和分析
  • sass报错:[sass] Undefined variable. @import升级@use语法注意事项
  • 使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)安装适配 Java 8 的 Maven
  • anythingllm服务器部署+ollama+deepseek+实现本地知识库问答
  • 深度学习04 数据增强、调整学习率
  • 2023年全国职业院校技能大赛GZ073网络系统管理赛项赛题第10套模块A:网络构建
  • 2023年河北省职业院校技能大赛网络系统管理赛项样题解法
  • vite+vue3开发uni-app时低版本浏览器不支持es6语法的问题排坑笔记
  • Linux系统编程基础详解
  • 钉钉应用开发
  • 打破限制!自定义 Hooks 如何提升 React 组件的灵活性
  • 使用arthas测试接口响应时间
  • Vue3.x的深度选择器详细解读
  • 基于Python的Diango旅游数据分析推荐系统设计与实现+毕业论文(15000字)
  • Django ModelForm使用(初学)
  • android ViewPager 管理 Fragment的预加载onCreate
  • 运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
  • 国产编辑器EverEdit -告别东找西找!一键打开当前文件所在目录!
  • 【分治法】线性时间选择问题
  • SpringBoot速成(16)项目部署P30
  • 【Mysql:数据库的基础操作】
  • Nacos Derby 远程命令执行漏洞修复建议
  • idea 2023.3.7常用插件
  • DeepSeek和ChatGPT在科研课题设计和SCI论文写作中的应用
  • kubeadm拉起的k8s集群证书过期的做法集群已奔溃也可以解决
  • 2024年河北省职业院校技能大赛网络系统管理赛项样题解法
  • 【开源免费】基于SpringBoot+Vue.JS个人博客系统(JAVA毕业设计)
  • 纯新手教程:用llama.cpp本地部署DeepSeek蒸馏模型