ExcelBigNumberConvert.java 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package com.ruoyi.common.convert;
  2. import cn.hutool.core.convert.Convert;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.alibaba.excel.converters.Converter;
  5. import com.alibaba.excel.enums.CellDataTypeEnum;
  6. import com.alibaba.excel.metadata.CellData;
  7. import com.alibaba.excel.metadata.GlobalConfiguration;
  8. import com.alibaba.excel.metadata.property.ExcelContentProperty;
  9. import lombok.extern.slf4j.Slf4j;
  10. import java.math.BigDecimal;
  11. /**
  12. * 大数值转换
  13. * Excel 数值长度位15位 大于15位的数值转换位字符串
  14. *
  15. * @author Lion Li
  16. */
  17. @Slf4j
  18. public class ExcelBigNumberConvert implements Converter<Long> {
  19. @Override
  20. public Class<Long> supportJavaTypeKey() {
  21. return Long.class;
  22. }
  23. @Override
  24. public CellDataTypeEnum supportExcelTypeKey() {
  25. return CellDataTypeEnum.STRING;
  26. }
  27. @Override
  28. public Long convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
  29. return Convert.toLong(cellData.getData());
  30. }
  31. @Override
  32. public CellData<Object> convertToExcelData(Long object, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {
  33. if (ObjectUtil.isNotNull(object)) {
  34. String str = Convert.toStr(object);
  35. if (str.length() > 15) {
  36. return new CellData<>(str);
  37. }
  38. }
  39. CellData<Object> cellData = new CellData<>(new BigDecimal(object));
  40. cellData.setType(CellDataTypeEnum.NUMBER);
  41. return cellData;
  42. }
  43. }