package com.dl.common.convert; import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.data.ReadCellData; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.metadata.property.ExcelContentProperty; import lombok.extern.slf4j.Slf4j; import java.math.BigDecimal; /** * 大数值转换 * Excel 数值长度位15位 大于15位的数值转换位字符串 * * @author Lion Li */ @Slf4j public class ExcelBigNumberConvert implements Converter { @Override public Class supportJavaTypeKey() { return Long.class; } @Override public CellDataTypeEnum supportExcelTypeKey() { return CellDataTypeEnum.STRING; } @Override public Long convertToJavaData(ReadCellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { return Convert.toLong(cellData.getData()); } @Override public WriteCellData convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) { if (ObjectUtil.isNotNull(object)) { String str = Convert.toStr(object); if (str.length() > 15) { return new WriteCellData<>(str); } } WriteCellData cellData = new WriteCellData<>(new BigDecimal(object)); cellData.setType(CellDataTypeEnum.NUMBER); return cellData; } }