EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式
需求:
在用easyExcel导出报表时,碰到需要将数据转换为数值or货币格式的需求
过程:
1.首先采取转换器的形式
@Override
public CellData convertToExcelData(BigDecimal bigDecimal, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (ObjectUtils.isEmpty(bigDecimal)) {
bigDecimal=BigDecimal.ZERO;
}
CellData cellData = new CellData(new DecimalFormat("#,##0.00").format(bigDecimal.setScale(2)));
return cellData;
}
发现生成的excel依旧是常规格式
2.采用@NumberFormat注解,依旧不行
3.修改转换器为
@Override
public CellData convertToExcelData(BigDecimal bigDecimal, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
if (ObjectUtils.isEmpty(bigDecimal)) {
bigDecimal=BigDecimal.ZERO;
}
CellData cellData = new CellData(CellDataTypeEnum.NUMBER );
cellData.setDataFormatString("##,##0.00");
cellData.setNumberValue(bigDecimal);
return cellData;
}
按理说应该可以了,可依旧不行,并且连千位分隔符也不见了

查看源码

发现是数据的格式转换只支持在读的时候
解决:
因为EasyExcel底层也是poi,所以可以用poi的格式转换来实现
if (!isHead && relativeRowIndex < list.size()&& head.getFieldName().equals("sjje")) {
if (ObjectUtils.isEmpty(cacheCellStyle.get("numberCellStyle"))) {
CellStyle cellStyle = writeSheetHolder.getSheet().getWorkbook().createCellStyle();
DataFormat dataFormat = writeSheetHolder.getSheet().getWorkbook().createDataFormat();
cellStyle.setDataFormat(dataFormat.getFormat("#,##0.00"));
cacheCellStyle.put("numberCellStyle", cellStyle);
}
cell.setCellType(CellType.NUMERIC);
cell.setCellStyle(cacheCellStyle.get("numberCellStyle"));
}
成功转换

over
EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式的更多相关文章
- 160919、使用AOP与注解记录Java日志
有些时候,我想要把每个运行过的方法接收到的参数.返回值和执行时间等信息记录(通过slf4j 和 log4j)下来.在AspectJ.jcabi-aspects和Java注解的帮助下我实现了这个想法. ...
- Spring注解与Java元注解小结
注解 Annotation 基于注解的开发,使得代码简洁,可读性高,简化的配置的同时也提高了开发的效率,尤其是SpringBoot的兴起,随着起步依赖和自动配置的完善,更是将基于注解的开发推到了新的高 ...
- 【转】Spring学习---Bean配置的三种方式(XML、注解、Java类)介绍与对比
[原文]https://www.toutiao.com/i6594205115605844493/ Spring学习Bean配置的三种方式(XML.注解.Java类)介绍与对比 本文将详细介绍Spri ...
- Java 自定义注解 校验指定字段对应数据库内容重复
一.前言 在项目中,某些情景下我们需要验证编码是否重复,账号是否重复,身份证号是否重复等... 而像验证这类代码如下: 那么有没有办法可以解决这类似的重复代码量呢? 我们可以通过自定义注解校验的方式去 ...
- java五行代码导出Excel
目录 先看代码 再看效果 EasyExcel 附: Java按模板导出Excel---基于Aspose实现 Java无模板导出Excel,Apache-POI插件实现 已经写过两种Excel导出插件了 ...
- 170313、poi:采用自定义注解的方式导入、导出excel(这种方式比较好扩展)
步骤一.自定义注解 步骤二.写Excel泛型工具类 步骤三.在需要导出excel的类属相上加上自定义注解,并设置 步骤四.写service,controller 步骤一:自定义注解 import ja ...
- java使用POI操作excel文件,实现批量导出,和导入
一.POI的定义 JAVA中操作Excel的有两种比较主流的工具包: JXL 和 POI .jxl 只能操作Excel 95, 97, 2000也即以.xls为后缀的excel.而poi可以操作Exc ...
- Java之POI导出Excel(一):单sheet
相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖 查看代码 <!-- ...
- JAVA中获取当前系统时间及格式转换
JAVA中获取当前系统时间 一. 获取当前系统时间和日期并格式化输出: import java.util.Date;import java.text.SimpleDateFormat; publi ...
随机推荐
- adobe cc 系列产品更改默认安装路径方法
通过Adobe Creative Cloud 修改 1.在开始菜单中找到图下程序点开,并进行如下操作: 2.点击Apps位置 等待加载出软件,如图下所示. 点击右上角图标,会弹出以下窗口,点击首选项 ...
- WPF 中的 路由事件
public class ReportTimeEventArgs:RoutedEventArgs { public ReportTimeEventArgs(RoutedEvent routedEven ...
- 关于PLSQL中的一些问题总结:在PLSQL中书写DDL等
关于问题前导,使用的数据表中涉及到的字段和类型: 在PLSQL中create.drop.truncate等DDL是没有办法直接执行的. 必须要使用: Execute immediate 'DDL语句' ...
- docker安装与配置gitlab详细过程
docker安装与配置gitlab详细过程 1.打开网易镜像中心 https://c.163yun.com/hub#/m/home/ 2.搜索gitlab,获取下载地址.例如:docker pull ...
- 新东方APP技术团队建设
作者:张建鑫, 曾任IBM高级软件架构师, 滴滴高级技术专家, 现任新东方集团高级技术总监 2019年注定是不平凡的一年,在俞敏洪老师对科技条线的密切关注下, 吴强老师亲自操盘了对产品技术条线的改革, ...
- Django——session保持登录
Django操作session语法: # 1.设置Sessions值 request.session['session_name'] ="admin" # 2.获取Sessions ...
- Python - 通过PyYaml库操作YAML文件
PyYaml简单介绍 Python的PyYAML模块是Python的YAML解析器和生成器 它有个版本分水岭,就是5.1 读取YAML5.1之前的读取方法 def read_yaml(self, pa ...
- web基础常识
1.b/s架构 2.tcp协议 3.web服务器
- liquibase新增字段注释导致表格注释同时变更bug记录
liquibase是一个用于数据库变更跟踪.版本管理和自动部署的开源工具.它的使用方式方法可以参考官方文档或者其他人的博客,这里不做过多介绍. 1. 问题复现 在使用过程中发现了一个版本bug.这个b ...
- CPF 入门教程 - 各平台各系统发布说明(九)
CPF C#跨平台桌面UI框架,支持Windows,Mac,Linux,支持龙芯.飞腾等CPU 系列教程 CPF 入门教程(一) CPF 入门教程 - 数据绑定和命令绑定(二) CPF 入门教程 - ...