From af3a35f5e039427a0761350896da894c90d83362 Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 19 Nov 2024 16:42:18 +0800 Subject: [PATCH] =?UTF-8?q?Excel07SaxReader=E4=B8=AD=EF=BC=8C=E5=AF=B9?= =?UTF-8?q?=E4=BA=8E=E5=B0=8F=E6=95=B0=E7=B1=BB=E5=9E=8B=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E7=B2=BE=E5=BA=A6=E5=88=A4=E6=96=AD=EF=BC=88issue#IB0?= =?UTF-8?q?EJ9@Gitee=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hutool/poi/excel/sax/ExcelSaxUtil.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/sax/ExcelSaxUtil.java b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/sax/ExcelSaxUtil.java index a22e7aaf5..2a50fe9d7 100644 --- a/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/sax/ExcelSaxUtil.java +++ b/hutool-poi/src/main/java/org/dromara/hutool/poi/excel/sax/ExcelSaxUtil.java @@ -16,22 +16,23 @@ package org.dromara.hutool.poi.excel.sax; -import org.dromara.hutool.core.date.DateTime; -import org.dromara.hutool.core.date.DateUtil; -import org.dromara.hutool.core.exception.DependencyException; -import org.dromara.hutool.core.io.IORuntimeException; -import org.dromara.hutool.core.text.CharUtil; -import org.dromara.hutool.core.text.StrUtil; -import org.dromara.hutool.core.util.ObjUtil; -import org.dromara.hutool.poi.excel.ExcelDateUtil; -import org.dromara.hutool.poi.excel.sax.handler.RowHandler; -import org.dromara.hutool.poi.POIException; import org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener; import org.apache.poi.hssf.record.CellValueRecordInterface; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.util.XMLHelper; import org.apache.poi.xssf.model.SharedStrings; import org.apache.poi.xssf.usermodel.XSSFRichTextString; +import org.dromara.hutool.core.date.DateTime; +import org.dromara.hutool.core.date.DateUtil; +import org.dromara.hutool.core.exception.DependencyException; +import org.dromara.hutool.core.io.IORuntimeException; +import org.dromara.hutool.core.math.NumberUtil; +import org.dromara.hutool.core.text.CharUtil; +import org.dromara.hutool.core.text.StrUtil; +import org.dromara.hutool.core.util.ObjUtil; +import org.dromara.hutool.poi.POIException; +import org.dromara.hutool.poi.excel.ExcelDateUtil; +import org.dromara.hutool.poi.excel.sax.handler.RowHandler; import org.xml.sax.ContentHandler; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -285,7 +286,15 @@ public class ExcelSaxUtil { if (StrUtil.isBlank(value)) { return null; } - return getNumberValue(Double.parseDouble(value), numFmtString); + + // issue#IB0EJ9 可能精度丢失 + final double number = Double.parseDouble(value); + if(false == value.equals(Double.toString(number))){ + // 精度丢失 + return NumberUtil.toBigDecimal(value); + } + + return getNumberValue(number, numFmtString); } /**