package com.ruoyi.common.easyExcel; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.converters.ReadConverterContext; import com.alibaba.excel.converters.WriteConverterContext; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.data.WriteCellData; import java.math.BigDecimal; import java.math.RoundingMode; public class BigDecimalConverter implements Converter { @Override public Class supportJavaTypeKey() { return String.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } /** * 这里读的时候会调用 * * @param context * @return */ @Override public BigDecimal convertToJavaData(ReadConverterContext context) { try { // 检查是否是字符串类型的单元格 if (CellDataTypeEnum.STRING.equals(context.getReadCellData().getType())) { return new BigDecimal(context.getReadCellData().getStringValue()).setScale(10, RoundingMode.DOWN); } // 检查是否是数字类型的单元格 else if (CellDataTypeEnum.NUMBER.equals(context.getReadCellData().getType())) { // 获取数字值并转化为字符串 return new BigDecimal(String.valueOf(context.getReadCellData().getNumberValue())).setScale(10, RoundingMode.DOWN); } else { return null; // 返回null表示未能识别的单元格类型 } }catch (Exception e){ return null; } } /** * 这里是写的时候会调用 不用管 * * @return */ @Override public WriteCellData convertToExcelData(WriteConverterContext context) { return new WriteCellData<>(String.valueOf(context.getValue())); } }