From 83240f3cbd9bd6fdeb208ff7adf818e27cff6c8b Mon Sep 17 00:00:00 2001 From: KID0031 <729133573@qq.com> Date: Sun, 11 Apr 2021 12:51:20 +0800 Subject: [PATCH 1/2] =?UTF-8?q?issue963:=20=E5=A2=9E=E6=B7=BB=E4=BA=86?= =?UTF-8?q?=E5=A4=84=E7=90=86BigInteger=E7=B1=BB=E5=9E=8B=E7=9A=84?= =?UTF-8?q?=E7=89=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../converters/DefaultConverterLoader.java | 8 ++++ .../BigIntegerBooleanConverter.java | 47 +++++++++++++++++++ .../biginteger/BigIntegerNumberConverter.java | 38 +++++++++++++++ .../biginteger/BigIntegerStringConverter.java | 42 +++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java create mode 100644 src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java create mode 100644 src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java diff --git a/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java b/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java index 01822559..c1705c9a 100644 --- a/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java +++ b/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java @@ -6,6 +6,9 @@ import java.util.Map; import com.alibaba.excel.converters.bigdecimal.BigDecimalBooleanConverter; import com.alibaba.excel.converters.bigdecimal.BigDecimalNumberConverter; import com.alibaba.excel.converters.bigdecimal.BigDecimalStringConverter; +import com.alibaba.excel.converters.bigdecimal.BigIntegerBooleanConverter; +import com.alibaba.excel.converters.biginteger.BigIntegerNumberConverter; +import com.alibaba.excel.converters.biginteger.BigIntegerStringConverter; import com.alibaba.excel.converters.booleanconverter.BooleanBooleanConverter; import com.alibaba.excel.converters.booleanconverter.BooleanNumberConverter; import com.alibaba.excel.converters.booleanconverter.BooleanStringConverter; @@ -94,6 +97,10 @@ public class DefaultConverterLoader { putAllConverter(new StringNumberConverter()); putAllConverter(new StringStringConverter()); putAllConverter(new StringErrorConverter()); + + putAllConverter(new BigIntegerBooleanConverter()); + putAllConverter(new BigIntegerStringConverter()); + putAllConverter(new BigIntegerNumberConverter()); } private static void initDefaultWriteConverter() { @@ -113,6 +120,7 @@ public class DefaultConverterLoader { putWriteConverter(new ByteArrayImageConverter()); putWriteConverter(new BoxingByteArrayImageConverter()); putWriteConverter(new UrlImageConverter()); + putWriteConverter(new BigIntegerStringConverter()); } /** diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java new file mode 100644 index 00000000..1c69e853 --- /dev/null +++ b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java @@ -0,0 +1,47 @@ +package com.alibaba.excel.converters.bigdecimal; + +import java.math.BigDecimal; +import java.math.BigInteger; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +/** + * BigDecimal and boolean converter + * + * @author Jiaju Zhuang + */ +public class BigIntegerBooleanConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return BigInteger.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.BOOLEAN; + } + + @Override + public BigInteger convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + if (cellData.getBooleanValue()) { + return BigInteger.ONE; + } + return BigInteger.ZERO; + } + + @Override + public CellData convertToExcelData(BigInteger value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + if (BigDecimal.ONE.equals(value)) { + return new CellData(Boolean.TRUE); + } + return new CellData(Boolean.FALSE); + } + +} diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java new file mode 100644 index 00000000..293bb14a --- /dev/null +++ b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java @@ -0,0 +1,38 @@ +package com.alibaba.excel.converters.biginteger; +import java.math.BigInteger; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; + +/** + * BigDecimal and number converter + * + * @author Jiaju Zhuang + */ +public class BigIntegerNumberConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return BigInteger.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.NUMBER; + } + + @Override + public BigInteger convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return cellData.getNumberValue().toBigInteger(); + } + + @Override + public CellData convertToExcelData(BigInteger value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return new CellData(value); + } +} diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java new file mode 100644 index 00000000..67910d77 --- /dev/null +++ b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerStringConverter.java @@ -0,0 +1,42 @@ +package com.alibaba.excel.converters.biginteger; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.text.ParseException; + +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.metadata.CellData; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import com.alibaba.excel.util.NumberUtils; + +/** + * BigDecimal and string converter + * + * @author Jiaju Zhuang + */ +public class BigIntegerStringConverter implements Converter { + + @Override + public Class supportJavaTypeKey() { + return BigInteger.class; + } + + @Override + public CellDataTypeEnum supportExcelTypeKey() { + return CellDataTypeEnum.STRING; + } + + @Override + public BigInteger convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) throws ParseException { + return NumberUtils.parseBigDecimal(cellData.getStringValue(), contentProperty).toBigInteger(); + } + + @Override + public CellData convertToExcelData(BigInteger value, ExcelContentProperty contentProperty, + GlobalConfiguration globalConfiguration) { + return NumberUtils.formatToCellData(value, contentProperty); + } +} From 23db7bec1495abd77c2b076aba70e873704e96a1 Mon Sep 17 00:00:00 2001 From: KID0031 <729133573@qq.com> Date: Sun, 25 Apr 2021 12:04:38 +0800 Subject: [PATCH 2/2] remove unused functions --- .../converters/DefaultConverterLoader.java | 4 -- .../BigIntegerBooleanConverter.java | 47 ------------------- .../biginteger/BigIntegerNumberConverter.java | 38 --------------- 3 files changed, 89 deletions(-) delete mode 100644 src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java delete mode 100644 src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java diff --git a/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java b/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java index c1705c9a..6ea8d4b2 100644 --- a/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java +++ b/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java @@ -6,8 +6,6 @@ import java.util.Map; import com.alibaba.excel.converters.bigdecimal.BigDecimalBooleanConverter; import com.alibaba.excel.converters.bigdecimal.BigDecimalNumberConverter; import com.alibaba.excel.converters.bigdecimal.BigDecimalStringConverter; -import com.alibaba.excel.converters.bigdecimal.BigIntegerBooleanConverter; -import com.alibaba.excel.converters.biginteger.BigIntegerNumberConverter; import com.alibaba.excel.converters.biginteger.BigIntegerStringConverter; import com.alibaba.excel.converters.booleanconverter.BooleanBooleanConverter; import com.alibaba.excel.converters.booleanconverter.BooleanNumberConverter; @@ -98,9 +96,7 @@ public class DefaultConverterLoader { putAllConverter(new StringStringConverter()); putAllConverter(new StringErrorConverter()); - putAllConverter(new BigIntegerBooleanConverter()); putAllConverter(new BigIntegerStringConverter()); - putAllConverter(new BigIntegerNumberConverter()); } private static void initDefaultWriteConverter() { diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java deleted file mode 100644 index 1c69e853..00000000 --- a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerBooleanConverter.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.alibaba.excel.converters.bigdecimal; - -import java.math.BigDecimal; -import java.math.BigInteger; - -import com.alibaba.excel.converters.Converter; -import com.alibaba.excel.enums.CellDataTypeEnum; -import com.alibaba.excel.metadata.CellData; -import com.alibaba.excel.metadata.GlobalConfiguration; -import com.alibaba.excel.metadata.property.ExcelContentProperty; - -/** - * BigDecimal and boolean converter - * - * @author Jiaju Zhuang - */ -public class BigIntegerBooleanConverter implements Converter { - - @Override - public Class supportJavaTypeKey() { - return BigInteger.class; - } - - @Override - public CellDataTypeEnum supportExcelTypeKey() { - return CellDataTypeEnum.BOOLEAN; - } - - @Override - public BigInteger convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, - GlobalConfiguration globalConfiguration) { - if (cellData.getBooleanValue()) { - return BigInteger.ONE; - } - return BigInteger.ZERO; - } - - @Override - public CellData convertToExcelData(BigInteger value, ExcelContentProperty contentProperty, - GlobalConfiguration globalConfiguration) { - if (BigDecimal.ONE.equals(value)) { - return new CellData(Boolean.TRUE); - } - return new CellData(Boolean.FALSE); - } - -} diff --git a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java b/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java deleted file mode 100644 index 293bb14a..00000000 --- a/src/main/java/com/alibaba/excel/converters/biginteger/BigIntegerNumberConverter.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.alibaba.excel.converters.biginteger; -import java.math.BigInteger; - -import com.alibaba.excel.converters.Converter; -import com.alibaba.excel.enums.CellDataTypeEnum; -import com.alibaba.excel.metadata.CellData; -import com.alibaba.excel.metadata.GlobalConfiguration; -import com.alibaba.excel.metadata.property.ExcelContentProperty; - -/** - * BigDecimal and number converter - * - * @author Jiaju Zhuang - */ -public class BigIntegerNumberConverter implements Converter { - - @Override - public Class supportJavaTypeKey() { - return BigInteger.class; - } - - @Override - public CellDataTypeEnum supportExcelTypeKey() { - return CellDataTypeEnum.NUMBER; - } - - @Override - public BigInteger convertToJavaData(CellData cellData, ExcelContentProperty contentProperty, - GlobalConfiguration globalConfiguration) { - return cellData.getNumberValue().toBigInteger(); - } - - @Override - public CellData convertToExcelData(BigInteger value, ExcelContentProperty contentProperty, - GlobalConfiguration globalConfiguration) { - return new CellData(value); - } -}