diff --git a/pom.xml b/pom.xml
index 6c90beb49e1784daa6e48a5a6418f490713de165..d411ade1ccbecb08ae77c4672f56a2f637e7a6a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.alibaba
easyexcel
- 2.2.8
+ 2.2.9
jar
easyexcel
diff --git a/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java b/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java
index b31bc706794a76678ebc7ccb0b0551e633551cb0..693c112065266df4ca64713a8df71a83b99cb9d2 100644
--- a/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java
+++ b/src/main/java/com/alibaba/excel/converters/string/StringNumberConverter.java
@@ -47,7 +47,7 @@ public class StringNumberConverter implements Converter {
}
// Excel defines formatting
if (cellData.getDataFormat() != null && !StringUtils.isEmpty(cellData.getDataFormatString())) {
- return NumberDataFormatterUtils.format(cellData.getNumberValue().doubleValue(), cellData.getDataFormat(),
+ return NumberDataFormatterUtils.format(cellData.getNumberValue(), cellData.getDataFormat(),
cellData.getDataFormatString(), globalConfiguration);
}
// Default conversion number
diff --git a/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java b/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java
index be9d2ad67afc4271e7ca32b7360660301bc826b0..2c955ed13b407b00d37d5567585e5a96d8898ff7 100644
--- a/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java
+++ b/src/main/java/com/alibaba/excel/metadata/format/DataFormatter.java
@@ -630,8 +630,8 @@ public class DataFormatter {
* @param dataFormatString
* @return a formatted number string
*/
- private String getFormattedNumberString(Double data, Integer dataFormat, String dataFormatString) {
- Format numberFormat = getFormat(data, dataFormat, dataFormatString);
+ private String getFormattedNumberString(BigDecimal data, Integer dataFormat, String dataFormatString) {
+ Format numberFormat = getFormat(data.doubleValue(), dataFormat, dataFormatString);
String formatted = numberFormat.format(data);
return formatted.replaceFirst("E(\\d)", "E+$1"); // to match Excel's E-notation
}
@@ -644,9 +644,9 @@ public class DataFormatter {
* @param dataFormatString
* @return
*/
- public String format(Double data, Integer dataFormat, String dataFormatString) {
+ public String format(BigDecimal data, Integer dataFormat, String dataFormatString) {
if (DateUtils.isADateFormat(dataFormat, dataFormatString)) {
- return getFormattedDateString(data, dataFormat, dataFormatString);
+ return getFormattedDateString(data.doubleValue(), dataFormat, dataFormatString);
}
return getFormattedNumberString(data, dataFormat, dataFormatString);
}
diff --git a/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java b/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java
index 09d149b675a633e972e5fcf7c18a1c36130e4d19..b4ba5b02a519707a89788132fd1328705f1b9412 100644
--- a/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java
+++ b/src/main/java/com/alibaba/excel/util/NumberDataFormatterUtils.java
@@ -1,5 +1,7 @@
package com.alibaba.excel.util;
+import java.math.BigDecimal;
+
import com.alibaba.excel.metadata.format.DataFormatter;
import com.alibaba.excel.metadata.GlobalConfiguration;
@@ -24,7 +26,7 @@ public class NumberDataFormatterUtils {
* @param globalConfiguration
* @return
*/
- public static String format(Double data, Integer dataFormat, String dataFormatString,
+ public static String format(BigDecimal data, Integer dataFormat, String dataFormatString,
GlobalConfiguration globalConfiguration) {
DataFormatter dataFormatter = DATA_FORMATTER_THREAD_LOCAL.get();
if (dataFormatter == null) {
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/encrypt/EncryptDataTest.java b/src/test/java/com/alibaba/easyexcel/test/core/encrypt/EncryptDataTest.java
index 375f9bea5b98e006f01d20165bddd7226fea4126..b7f63cf013304bb17e7b2009e29d0f6c2681297b 100644
--- a/src/test/java/com/alibaba/easyexcel/test/core/encrypt/EncryptDataTest.java
+++ b/src/test/java/com/alibaba/easyexcel/test/core/encrypt/EncryptDataTest.java
@@ -3,21 +3,23 @@ package com.alibaba.easyexcel.test.core.encrypt;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.List;
-import org.junit.BeforeClass;
-import org.junit.FixMethodOrder;
-import org.junit.Test;
-import org.junit.runners.MethodSorters;
-
import com.alibaba.easyexcel.test.core.simple.SimpleData;
import com.alibaba.easyexcel.test.util.TestFileUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.support.ExcelTypeEnum;
+import org.junit.BeforeClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
/**
- *
* @author Jiaju Zhuang
*/
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
@@ -28,6 +30,15 @@ public class EncryptDataTest {
private static File file07OutputStream;
private static File file03OutputStream;
+ @Test
+ public void testformat() {
+ DecimalFormat decimalFormat = new DecimalFormat("0.00");
+ decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
+ BigDecimal bigDecimal = new BigDecimal("0.105");
+
+ System.out.println(decimalFormat.format(bigDecimal));
+ }
+
@BeforeClass
public static void init() {
file07 = TestFileUtil.createNewFile("encrypt07.xlsx");
diff --git a/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java b/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
index 938e031b04ebf7cc75711af75de02a966f2d3bd9..c3f7ea1bd4cdc001273adc02b007051c3019e95d 100644
--- a/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
+++ b/src/test/java/com/alibaba/easyexcel/test/temp/Lock2Test.java
@@ -34,7 +34,7 @@ public class Lock2Test {
@Test
public void test() throws Exception {
// File file = TestFileUtil.readUserHomeFile("test/test6.xls");
- File file = new File("D:\\test\\T85_税金入库表202010.xlsx");
+ File file = new File("/Users/zhuangjiaju/Downloads/签到金模板-0507-v3.xlsx");
List