53 lines
1.6 KiB
Java
53 lines
1.6 KiB
Java
package com.ruoyi.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<Long> {
|
|
|
|
@Override
|
|
public Class<Long> 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<Object> 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<Object> cellData = new WriteCellData<>(new BigDecimal(object));
|
|
cellData.setType(CellDataTypeEnum.NUMBER);
|
|
return cellData;
|
|
}
|
|
|
|
}
|