| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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;
- }
- }
|