zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    11-Mybatis中使用PageHelper分页插件
    10-Mybatis使用注解开发
    Windows快捷键
    环境搭建
    计算机基础
    oracle语句
    oracle
    测试质量和类型
    测试基础
    项目部署和总结
  • 原文地址:https://www.cnblogs.com/wutongshu-master/p/12174860.html
Copyright © 2011-2022 走看看