:℅仌``嚸ヤ 2024-04-09 14:37 采纳率: 0%
浏览 344

java easyexcel导出,实体类数据是String类型,想要导出的excel格式是数字类型的千分位

java 实体类的数据是String类型的,想要用easyexcel导出时,导出的单元格格式是数值类型的,并且设置千分位,写了一个转换器,但是只能转换成千分位,单元格还是文本类型的

private static final DecimalFormat FORMAT = new DecimalFormat("#,##0");

public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty,
        GlobalConfiguration globalConfiguration) {
        try {
            // 将字符串转换为数字进行千分位格式化
            Number number = FORMAT.parse(value);
            String formattedNumber = FORMAT.format(number);
            // 创建WriteCellData对象并设置千分位格式化后的字符串
            return new WriteCellData<>(formattedNumber);
        } catch (Exception e) {
            return new WriteCellData<>(value);
        }
    }

//又试了第二种,转换成数字了,但是千分位又没了
public WriteCellData<?> convertToExcelData(String value, ExcelContentProperty contentProperty,
        GlobalConfiguration globalConfiguration) {
        try {
            // 将字符串转换为数字进行千分位格式化
            Number number = FORMAT.parse(value);
            // 使用BigDecimal确保精度
            BigDecimal bigDecimalValue = new BigDecimal(number.toString());
            // 创建WriteCellData对象并设置为数字类型
            return new WriteCellData<>(bigDecimalValue);
        } catch (Exception e) {
            return new WriteCellData<>(value);
        }
    }
  • 写回答

6条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-04-09 14:41
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题:java 实体类的数据是String类型,如何使用easyexcel导出时,导出的单元格格式是数值类型的,并且设置千分位? 答案: 为了将String类型转换成数值类型并设置千分位格式化,可以在写入excel时使用Converter。Converter是easyexcel提供的一个接口,用于对数据进行转换。 在Converter中,可以自定义convertToExcelData()方法来实现数据转换。具体地,可以首先将String类型的数据转换成数字类型,然后再对数字进行格式化。最后,将格式化后的结果写入到excel中。 以下是一个例子:
    public class MyConverter implements Converter<String> {
        
        private static final DecimalFormat FORMAT = new DecimalFormat("#,##0");
        @Override
        public Class supportJavaTypeKey() {
            return String.class;
        }
        @Override
        public CellData convertToExcelData(String value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
            try {
                // 将字符串转换为数字进行千分位格式化
                Number number = FORMAT.parse(value);
                // 创建CellData对象并设置千分位格式化后的数字
                return new CellData(number);
            } catch (ParseException e) {
                // 转换失败,则返回原始数据
                return new CellData(value);
            }
        }
    }
    

    在写入excel时,可以将自定义的Converter传入WriterSheet对象中:

    // 创建excel文件
    File file = new File("my_excel.xlsx");
    // 写入excel文件
    try (OutputStream outputStream = new FileOutputStream(file)) {
        // 创建excel写入器
        ExcelWriter excelWriter = EasyExcel.write(outputStream).build();
        // 创建Sheet
        WriteSheet writeSheet = EasyExcel.writerSheet("Sheet1").build();
        // 设置Converter
        MyConverter myConverter = new MyConverter();
        writeSheet.setConverterMap(Collections.singletonMap(String.class, myConverter));
        // 写入数据
        List<String> data = Arrays.asList("1234.56", "7890.12", "3456.78");
        excelWriter.write(data, writeSheet);
        // 关闭excel写入器
        excelWriter.finish();
    }
    

    此时,写入到excel中的数据将会是数值类型,并且以千分位格式化。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月9日