EasyExcel 導出,保留兩位小數并顯示 千分位

實體類 屬性類型為?BigDecimal

注解?@NumberFormat("#,###.00") 試過了不頂用,原因不太清楚

值為 0.81 這種,導出后變為 .81

所以,換個思路,寫個轉換器,就是麻煩點

轉換器

BigDecimalConvert

import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.converters.ReadConverterContext;
import com.alibaba.excel.converters.WriteConverterContext;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.data.WriteCellData;import java.math.BigDecimal;/*** @Package_Name * @Author Leslie Lee* @TIME* @Version*/
public class BigDecimalConvert implements Converter<BigDecimal> {@Overridepublic Class<?> supportJavaTypeKey() {return Converter.super.supportJavaTypeKey();}@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return Converter.super.supportExcelTypeKey();}@Overridepublic BigDecimal convertToJavaData(ReadConverterContext<?> context) throws Exception {return Converter.super.convertToJavaData(context);}@Overridepublic WriteCellData<?> convertToExcelData(WriteConverterContext<BigDecimal> context) throws Exception {String val = context.getValue().toString();if (!StrUtil.isEmpty(val)) {if (!val.contains(".")) {//沒有小數點 加 . 并補零val = val + ".00";} else if (val.indexOf(".") == val.length() - 2) {//一位小數 補零val = val + "0";}int decimalIndex = val.indexOf('.');// 假設val為 19569.12String integerPart = val.substring(0, decimalIndex);// 19569String decimalPart = val.substring(decimalIndex);// .12StringBuilder formattedNum = new StringBuilder();int count = 0;for (int i = integerPart.length() - 1; i >= 0; i--) {// 循環前部分加入千分位formattedNum.insert(0, integerPart.charAt(i));count++;if (count % 3 == 0 && i != 0) {// 三個字符一加formattedNum.insert(0, ",");}}formattedNum.append(decimalPart);return new WriteCellData<>(formattedNum.toString());}return new WriteCellData<>(val);}
}

使用方式

@ExcelProperty(value = "金額",converter = BigDecimalConvert.class)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Leslie Lee 隨筆

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/11703.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/11703.shtml
英文地址,請注明出處:http://en.pswp.cn/web/11703.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【go項目01_學習記錄11】

操作數據庫 1 文章列表2 刪除文章 1 文章列表 &#xff08;1&#xff09;先保證文章已經有多篇&#xff0c;可以直接在數據庫中添加&#xff0c;或者訪問鏈接: localhost:3000/articles/create&#xff0c;增加幾篇文章。 &#xff08;2&#xff09;之前設置好了articles.ind…

【Web后端】監聽器Listener

1、簡介 用來監聽Servlet組件對象狀態發生變化的組件可以監聽的源包括:ServetRequest、HttpSession、ServletContext當監聽到事件源狀態發生變化時&#xff0c;會有對應的響應行為 2、使用方法 在web.xml文件中配置 <listener> <listener-class>com.coder.util.…

【DevOps】詳解 Linux 用戶和權限管理:添加用戶、分組及文件權限設置

目錄 1. 用戶管理 用戶分類 用戶相關文件 常用命令 2. 組管理 組相關文件 常用命令 3. 權限管理 文件權限 權限表示 修改權限 修改所有者和所屬組 特殊權限 4. 示例 命令的詳細解釋 權限解釋 示例&#xff1a;文件權限 -rw-r--r-- 的含義 在 Linux 中&#xf…

棧隊列經典OJ題(詳細過程)

1. 有效的括號 - 力扣&#xff08;LeetCode&#xff09; 第一題判斷有效的括號&#xff0c;這道題我們會用到棧的知識&#xff0c;棧是后進先出的&#xff0c;可以根據這個來解這道題&#xff0c;先看一下題目和示例。 1.1整體思路 我們通過示例可以看出括號匹配就返回true&am…

【JAVA】BOSS系統發版藝術:構建高效、優雅的微服務部署策略

在現代軟件開發領域&#xff0c;微服務架構與容器化部署已迅速成為行業新趨勢。微服務架構通過將應用拆分成多個小型、自治的服務單元&#xff0c;每個服務承擔某項特定的業務功能。而容器化部署則以其輕量級和高度可移植的特性&#xff0c;為這些微服務的有效打包、分發和運行…

機器學習 - 不同分類模型的比較

一、模型訓練 本案例中&#xff0c;我們將通過四種不同的模型來預測泰坦尼克號乘客的生存情況。 一下是訓練的具體步驟。 加載數據 從seaborn庫中加載目標數據。該數據集包括多個特征&#xff0c;如 PassengerId, Pclass, Name, Sex, Age, SibSp, Parch, Ticket, Fare, Cabi…

科技查新中的工法查新點如何確立與提煉?案例講解!

按《工程建設工法管理辦法》( 建 質&#xff3b;2014&#xff3d;103 號) &#xff0c;工法&#xff0c;是指以工程為對象&#xff0c;以工藝為核心&#xff0c;運用系 統工程原理&#xff0c;把先進技術和科學管理結合起來&#xff0c;經過一定工程實踐形成的綜合配套的施工方…

探索美國動態IP池:技術賦能下的網絡安全新篇章

在數字化飛速發展的今天&#xff0c;網絡安全成為了各行各業關注的焦點。特別是在跨國業務中&#xff0c;如何保障數據的安全傳輸和合規性成為了企業面臨的重要挑戰。美國動態IP池作為一種新興的網絡技術&#xff0c;正逐漸走進人們的視野&#xff0c;為網絡安全提供新的解決方…

黑馬甄選離線數倉項目day02(數據采集)

datax介紹 官網&#xff1a; https://github.com/alibaba/DataX/blob/master/introduction.md DataX 是阿里云 DataWorks數據集成 的開源版本&#xff0c;在阿里巴巴集團內被廣泛使用的離線數據同步工具/平臺。 DataX 實現了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre…

Java中List接口中方法的使用(初學者指南)

Java中List接口中方法的使用&#xff08;初學者指南&#xff09; 在Java中&#xff0c;List接口是Collection接口的子接口&#xff0c;它表示一個有序的集合&#xff0c;其中的元素都可以重復。List接口提供了許多額外的方法&#xff0c;用于對元素進行插入、刪除、查詢等操作…

計算機Java項目|Springboot學生讀書筆記共享

作者主頁&#xff1a;編程指南針 作者簡介&#xff1a;Java領域優質創作者、CSDN博客專家 、CSDN內容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構師設計經驗、騰訊課堂常駐講師 主要內容&#xff1a;Java項目、Python項目、前端項目、人工智能與大數據、簡…

C++通過json文件配置參數

一、安裝nlohmann json nlohmann json&#xff1a;安裝_nlohmann安裝-CSDN博客 依次執行下面指令&#xff1a; git clone https://gitee.com/cuihongxi/mov_from_github.gitcd json-developmkdir buildcd buildcmake ..makesudo make install 二、安裝完成后使用 #include…

華為設備display查看命令

display version //查看版本信息 display current-configuration //查看配置詳情 display this //查看當前視圖有效配置 display ip routing-table //查看路由表 display ip routing-table 192.168.3.1 //查看去往3.1的路由 display ip interface brief //查看接口下ip信息 dis…

想跨境出海?云手機提供了一種可能性

全球化時代&#xff0c;越來越多的中國電商開始將目光投向了海外市場。這并不是偶然&#xff0c;而是他們在長期的市場運營中&#xff0c;看到了出海的必要性和潛在的機會。 中國的電商市場無疑是全球最大也最發達的之一。然而&#xff0c;隨著市場的不斷發展和競爭的日益加劇…

visual studio2022 JNI極簡開發流程

文章目錄 1 創建java類2 生成JNI頭文件3 使用visual studio2022創建DLL項目3.1 選擇模板中&#xff08;Windows桌面向導&#xff09;3.2 為項目命名3.3 選擇應用程序類型為動態鏈接庫3.4 項目概覽 4 導入需要的頭文件4.1 導入需要的頭文件4.2 修改頭文件 5 編寫C實現6 生成dll文…

服務器3389端口,服務器3389端口風險提示的應對措施

3389端口是Windows操作系統中遠程桌面協議&#xff08;RDP&#xff09;的默認端口。一旦該端口被惡意攻擊者利用&#xff0c;可能會導致未經授權的遠程訪問和數據泄露等嚴重安全問題。 針對此風險&#xff0c;強烈建議您采取以下措施&#xff1a; 1. 修改默認端口&#xff1a;…

Java面試之抽象類和接口

Java的一個重要特性就是抽象&#xff0c;抽象是指將具體的事物抽象成更一般化、更抽象化的概念或模型。在Java中&#xff0c;抽象可以通過抽象類和接口來實現&#xff0c;它們讓你能夠定義一些方法但不提供具體實現&#xff0c;從而讓子類去實現具體細節。 一、抽象類&#xf…

springboot3 集成spring-authorization-server (一 基礎篇)

官方文檔 Spring Authorization Server 環境介紹 java&#xff1a;17 SpringBoot&#xff1a;3.2.0 SpringCloud&#xff1a;2023.0.0 引入maven配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

識別AI論文生成內容,降低論文高AI率

AI寫作工具能幫我們在短時間內高效生成一篇畢業論文、開通報告、文獻綜述、任務書、調研報告、期刊論文、課程論文等等&#xff0c;導致許多人開始使用AI寫作工具作為撰寫學術論文的輔助手段。而學術界為了杜絕此行為&#xff0c;開始使用AIGC檢測系統來判斷文章是由AI生成還是…

解鎖商業AI,賦能新質生產力發展——思愛普中國峰會探展全紀錄

ITValue 鈦媒體獨家探秘思愛普中國峰會&#xff0c;帶你深刻感受SAP助力企業利用以商業AI為代表的數字化技術&#xff0c;實現質的飛躍&#xff0c;通過全數據、全球化、全綠色賦能新型中國企業發展新質生產力。 首發&#xff5c;鈦媒體APP ITValue 5月10日&#xff0c;一年一度…