EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1614字,纯文字阅读大概需要3分钟。
内容图文
需求:
在用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
原文:https://www.cnblogs.com/wutongshu-master/p/12174860.html
内容总结
以上是互联网集市为您收集整理的EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式全部内容,希望文章能够帮你解决EasyExcel无法用转换器或者注解将java字段写入为excel的数值格式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。