若依-@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.mzph.cn/diannao/70537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 热题 100_搜索二维矩阵(64_74_中等_C++)(二分查找)(暴力破解法;Z字形查找;一次二分查找)

LeetCode 热题 100_搜索二维矩阵(64_74) 题目描述:输入输出样例:题解:解题思路:思路一(暴力破解法):思路二(Z字形查找):思路三&#x…

从CNN到Transformer:遥感影像目标检测的技术演进(矿产勘探、精准农业、城市规划、林业测量、军事目标识别和灾害评估等)

在遥感影像分析领域,目标检测一直是研究热点之一。随着高分辨率对地观测系统的不断发展,遥感影像的分辨率和数据量呈爆发式增长,如何高效、准确地从海量数据中提取有用信息,成为了一个亟待解决的问题。近年来,深度学习…

【rt-thread】rt-thread 控制 led 的两种方式

1. pin设备 #define LED_PIN 3int led(void) {rt_uint8_t count;rt_pin_mode(LED_PIN, PIN_MODE_OUTPUT); for(count 0 ; count < 10 ;count){ rt_pin_write(LED_PIN, PIN_HIGH);rt_kprintf("led on, count : %d %d\r\n", count, rt_pin_read(LED_PIN));…

Excell 代码处理

文章目录 Excell 代码处理cvc格式xlsl格式小结 Excell 代码处理 有时候要对excell进行分析&#xff0c;或者数据的导入导出&#xff0c;这个时候如果可以用代码读写分析操作那么会方便很多 cvc格式 CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff09;是…

新手小白如何挖掘cnvd通用漏洞之存储xss漏洞(利用xss钓鱼)

视频教程和更多福利在我主页简介或专栏里 &#xff08;不懂都可以来问我 专栏找我哦&#xff09; 如果对你有帮助你可以来专栏找我&#xff0c;我可以无偿分享给你对你更有帮助的一些经验和资料哦 目录&#xff1a; 一、XSS的三种类型&#xff1a; 二、XSS攻击的危害&#x…

代码随想录算法【Day52】

Day51 101. 孤岛的总面积 思路 从周边找到陆地然后 通过 dfs或者bfs 将周边靠陆地且相邻的陆地都变成海洋&#xff0c;然后再去重新遍历地图 统计此时还剩下的陆地 代码 #include <iostream> #include <vector> using namespace std; int dir[4][2] {-1, 0, …

Python开源项目月排行 2024年12月

#2024年12月2025年1月21日1DeepSeek-Coder-V2一个开源的专家混合&#xff08;MoE&#xff09;代码语言模型&#xff0c;其在代码特定任务中的性能可与GPT4-Turbo相媲美。具体而言&#xff0c;DeepSeek-Coder-V2是在DeepSeek-V2的一个中间检查点上进一步预训练的&#xff0c;增加…

Resource not found: roslaunchROS path [0]=/opt/ros/noetic/share/ros

解决办法&#xff1b; cd ~/catkin_ws rm -rf build/ devel/ catkin_make source devel/setup.bash sudo apt-get install ros-noetic-roslaunch 输入roscore后

.NET + Vue3 的前后端项目在IIS的发布

目录 一、发布准备 1、安装 IIS 2、安装 Windows Hosting Bundle&#xff08;.NET Core 托管捆绑包&#xff09; 3、安装 IIS URL Rewrite 二、项目发布 1、后端项目发布 2、前端项目发布 3、将项目部署到 IIS中 三、网站配置 1、IP配置 2、防火墙配置 3、跨域配置…

指定定网卡名称

一、PCIe网卡名称指定 原理&#xff1a;利用udev规则匹配PCIe设备的硬件特征&#xff08;如总线位置、MAC地址等&#xff09;&#xff0c;覆盖默认命名规则 4 。 步骤&#xff1a; 获取设备信息&#xff1a; Bash udevadm info -a -p /sys/class/net/<原设备名> # 如e…

【python】解析自动化脚本文件并按照=测试周期=存储记录

【python】连接Jira获取token以及jira对象 【python】解析自动化脚本文件并按照测试周期存储记录 【python】向Jira推送自动化用例执行成功 【python】向Jira测试计划下&#xff0c;附件中增加html测试报告 将已编写的自动化测试用例按照jira号解析出来&#xff0c;并按照测试计…

Linux驱动开发之音频驱动与基础应用编程

目录 CODEC芯片 音频编码 I2S总线接口 数字音频接口(DAI) 设备树配置 ALSA 音频相关概念 应用程序编写 运行测试 CODEC芯片 音频若想被CPU“听到”&#xff0c;就必须转换为CPU能够“听懂”的语言&#xff0c;即二进制数据的0和1。在信号处理领域&#xff0c;声音是模…

在 Java 中解析 JSON 数据

例子解析以下JSON数据 {"code":0,"msg":"成功","data": [{ "host":"1068222.com", "port":"", "m_token":"490e20e70e7de5f21a24b14c12a393f6", "categ…

python——集合(一)

文章目录 集合 set创建集合访问集合项in关键字添加集合元素删除集合元素复制集合使用操作符对集合进行交集、并集、差集、对称差集使用方法对集合进行交集、并集、差集、对称差集子集和超集 frozenset 冻结集合&#xff1f; 不可变集合&#xff01; 集合 set 什么是集合&#…

DeepSeek 与网络安全:AI 在网络安全领域的应用与挑战

&#x1f4dd;个人主页&#x1f339;&#xff1a;一ge科研小菜鸡-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 1. 引言 在当今数字化时代&#xff0c;网络安全已成为国家、企业和个人面临的重要挑战。从传统的病毒、木马攻击&#xff0c;到高…

【Blender】二、建模篇--05,阵列修改器与晶格形变

阵列修改器是bender里面一个比较常用的修改器,所以我们单独开口来讲,我们会先从几片树叶出发,然后我们用阵列修改器把这几片树叶变成这样的造型和这样的造型。这两个造型分别就代表着阵列修改器最常用的两种偏移方法,我们现在就开始我们先来做几个树叶。 1.树叶建模 首先…

【Python 专题】数据结构 树

LeetCode 题目104. 二叉树的最大深度(gif 图解)方法一:后序遍历(DFS)方法二:层序遍历(BFS)872. 叶子相似的树(DFS 遍历)1448. 统计二叉树中好节点的数目(DFS 遍历)437. 路径总和 III(前缀和 + DFS 回溯)1372. 二叉树中的最长交错路径(DFS)236. 二叉树的最近公共…

Linux下基本指令(4)

Linux权限的概念 Linux下有两种用户&#xff1a;超级用户&#xff08;root&#xff09;、普通用户。 超级用户&#xff1a;可以再linux系统下做任何事情&#xff0c;不受限制 普通用户&#xff1a;在linux下做有限的事情。 超级用户的命令提示符是“#”&#xff0c;普通用户…

ubuntu部署小笔记-采坑

ubuntu部署小笔记 搭建前端控制端后端前端nginx反向代理使用ubuntu部署nextjs项目问题一 如何访问端口号配置后台运行该进程pm2 问题二 包体过大生产环境下所需文件 问题三 部署在vercel时出现的问题需要魔法访问后端api时&#xff0c;必须使用https协议电脑端访问正常&#xf…

【联盛德 W803-Pico 试用】简介、工程测试

【联盛德 W803-Pico 试用】简介、工程测试 本文介绍了联盛德微电子 W803-Pico 开发板的基本信息、环境搭建、工程测试等内容。简介包含开发板功能、主控参数及特点、开发板原理图等信息&#xff0c;工程测试包括 Blink、串口打印等方案的演示。 活动详情&#xff1a;联盛德问答…