文章目录

  • 前言
  • 3.0版本之前
    • 1、创建自定义单元格格式类
    • 2、创建测试数据接收类
    • 3、创建excel字段映射类
    • 4、编写测试代码
  • 运行结果
  • 结论

前言

正常来说,使用EasyExcel导出文件的金额数属于常规,会在左上角出现小三角的显示。

3.0版本之前,官方并未清晰的给出如何解决金融类型数据导出为数值的方式,在github中给定的说法也仅限于升级版本至3.0

https://github.com/alibaba/easyexcel/issues/1646


3.0版本之前

然道说在3.0版本之前,就不能实现上述操作了?

答案是否定的。

EasyExcel导出文件,每个列中的类型默认是常规型,只需要变更单元格的类型即可。

有幸得到一位大佬的指导,解决方式如下所示:

1、创建自定义单元格格式类

import com.alibaba.excel.metadata.Head;
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;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Workbook;public class NumberCellStyle  implements CellWriteHandler {@Overridepublic void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer integer, Boolean aBoolean) {Workbook workbook = writeSheetHolder.getSheet().getWorkbook();CellStyle cellStyle = workbook.createCellStyle();// 如果字段过多,可以考虑使用枚举,这里不做阐述// 判断字段名称是否是  money,如果是则将其单元格格式进行变更if ("money".equals(head.getFieldName())){cell.setCellType(CellType.NUMERIC);cellStyle.setDataFormat((short)4);cell.setCellStyle(cellStyle);}}}

2、创建测试数据接收类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.math.BigDecimal;@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserCurrency {private String name;private BigDecimal money;
}

3、创建excel字段映射类

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;import java.math.BigDecimal;@Data
public class UserCurrencyExcel {@ExcelProperty(value = "别名",index = 1)private String name;@ExcelProperty(value = "金额",index = 2)private BigDecimal money;
}

4、编写测试代码

import com.alibaba.excel.EasyExcel;import java.io.File;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;public class ExcelTest {public static void main(String[] args) throws Exception {List<UserCurrency> userCurrencies = Arrays.asList(new UserCurrency("香蕉1", new BigDecimal(500.00)),new UserCurrency("香蕉2", new BigDecimal(1234567.00)));File file = new File("/test/test_w.xlsx");// 针对文件路径,获取文件所在路径之上的路径信息if(!file.getParentFile().exists()){file.getParentFile().mkdirs();}// 判断文件是否存在if(!file.exists()){file.createNewFile();}//EasyExcel.write(file, UserCurrencyExcel.class).sheet("test").doWrite(userCurrencies);EasyExcel.write(file, UserCurrencyExcel.class).registerWriteHandler(new NumberCellStyle()).sheet("test").doWrite(userCurrencies);}
}

运行结果


当然,有的客户会要求必须导出的内容有千分位,此时可以在映射类金融金额字段上增加@NumberFormat("#,##0.00")注解来实现。如下所示:

运行程序后,显示的金额数为:

结论

解决金融金额数有两种方式:

  • 1、不能升级3.0版本,可以考虑改变单元格样式类型。
  • 2、可以升级3.0版本,则不需要做任何的改动;3.0官方对其做了适配。

EasyExcel——设置导出后excel金额支持自动计算(金融金额)相关推荐

  1. easyexcel生成动态模板(模板支持下拉框),动态字段导出excel表格,常规字段导出excel表格

    备注:动态字段导出主要是用了反射的原理,跟excel需要导出的字段一一映射.话不多说,直接上代码: 1.生成的动态模板如图: 如上图,如果下拉框里不是选择的值,会给用户提示,下拉框用来限制用户导入只能 ...

  2. xlsx模块 前端_利用xlsx-syle前端导出excel且支持自定义样式

    利用xlsx-syle前端导出excel且支持自定义样式 前言 本文的代码是基于react的. 本文仅用于记录我在前端导出excel遇到的问题的笔记整理. 需求描述 需要前端来实现对数据的导出,导出成 ...

  3. EasyExcel导入和导出excel数据表格用法示例

    说明:平时项目中经常有需要把excel表格中的数据导入库中,或者需要把查询出来的数据导出到excel文件中,今天就来介绍阿里的 easyexcel 的用法 一.SpringBoot集成EasyExce ...

  4. EasyExcel的使用--填充excel

    EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目. 今天根据官网(www.yuque.com/easyexcel/doc/read)指导,试了一个简单的填充例子,如下. 了 ...

  5. EasyExcel 导出数据超过 Excel 单表上限了,该怎么办???

    点击上方"Java基基",选择"设为星标" 做积极的人,而不是积极废人! 每天 14:00 更新文章,每天掉亿点点头发... 源码精品专栏 原创 | Java ...

  6. EasyExcel设置特定单个单元格(颜色)样式

    原文链接出自:easyExcel设置单个单元格(颜色)样式 背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相 ...

  7. C# 中Excel导出,可以自由设置导出的excel格式

    Excel导出,不管在java,C#等后台语言,或者是javascrit,jquery等脚本语言,有很多种方式都可以将查出的数据导成excel的格式.我这次是从公司的一个同事那里学来的一个方法.是有关 ...

  8. python批量打印机excel_python批量设置多个Excel文件页眉页脚的脚本

    本文实例为大家分享了python批量设置多个Excel文件页眉页脚的具体代码,供大家参考,具体内容如下 import os import openpyxl from openpyxl.workshee ...

  9. easyExcel设置水印

    1.依赖导入 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</a ...

最新文章

  1. 爬虫之requests模块发送带参数的请求
  2. String常用方法总结
  3. arcgis双标准纬线等角圆锥投影_世界地图是怎么制作出来的,各投影算法的来历...
  4. [html] 你认为table的作用和优缺点是什么呢?
  5. nlp5-n-gram/语言模型(数据平滑方法
  6. 全球首发1毫秒计费模式,腾讯云引领Serverless时代新标准
  7. Android学习之Android 5.0分享动画实现微信点击全屏效果
  8. kali 创建php可执行文件_Kali安装wordpress
  9. python函数调用的例子_Python案例|混用C函数
  10. 常用Linux命令(持续更新)
  11. weka mac安装
  12. 搜索引擎的基本工作原理
  13. el-input设置type为number时,切换为中文输入法输入会让光标上移的问题解决
  14. 408计算机组成原理学习:数据的表示与计算
  15. java实现屏幕亮度调节
  16. (二)机器学习的流程概述,线性规划,图像分类
  17. 少年,离regional还有两个周
  18. 解决MySQL报错ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)
  19. UI设计必备工具有哪些?
  20. uni-app引用阿里巴巴官方图标库

热门文章

  1. 木材材积表快速计算器_原木材积表(运算表)
  2. Mac OS 电脑恢复出厂设置之详细操作
  3. WordPress + Avada主题 安装Demo教程
  4. 哈工大网络空间安全专业划在计算机类吗,哈尔滨工业大学网络空间安全考研难吗...
  5. JavaWeb上传头像
  6. 2021恩施高考成绩查询,2021恩施中考成绩查询 2021恩施中考成绩查询时间及入口...
  7. 详解printf重定向到文件中,打印日志的实现
  8. 小红书10万粉算大号么?快速涨粉实用技巧
  9. LaTeX 免费神器!再也不怕复杂的公式了
  10. 野蛮生长已到尽头 WiFi百家争鸣谁能破局