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<BigDecimal> {
|
|
@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<BigDecimal> context) {
|
return new WriteCellData<>(String.valueOf(context.getValue()));
|
}
|
}
|