alibaba / easyexcel

快速、简洁、解决大文件内存溢出的java处理Excel工具
https://easyexcel.opensource.alibaba.com
Apache License 2.0
32.01k stars 7.49k forks source link

读文件时cell为空为什么默认使用double来解析? #715

Closed YaoYufeng closed 4 years ago

YaoYufeng commented 4 years ago

版本2.0.0-beta6

excel中存在空cell,读入的时候报异常,经分析是因为把空cell用double来解析了 com.alibaba.excel.analysis.v07.handlers.DefaultCellHandler#appendCurrentCellValue

2019-10-18 15:32:56,283 ERROR [] [http-nio-8080-exec-1] o.a.c.c.C.[.[.[.[dispatcherServlet]:log:175 Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NumberFormatException: empty String] with root cause
java.lang.NumberFormatException: empty String
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842) ~[?:1.8.0_60]
    at sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110) ~[?:1.8.0_60]
    at java.lang.Double.parseDouble(Double.java:538) ~[?:1.8.0_60]
    at java.lang.Double.valueOf(Double.java:502) ~[?:1.8.0_60]
    at com.alibaba.excel.analysis.v07.handlers.DefaultCellHandler.appendCurrentCellValue(DefaultCellHandler.java:166) ~[easyexcel-2.0.0-beta6.jar:?]
    at com.alibaba.excel.analysis.v07.XlsxRowHandler.characters(XlsxRowHandler.java:52) ~[easyexcel-2.0.0-beta6.jar:?]
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.characters(AbstractSAXParser.java:546) ~[?:1.8.0_60]
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:463) ~[?:1.8.0_60]
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848) ~[?:1.8.0_60]
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) ~[?:1.8.0_60]
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) ~[?:1.8.0_60]
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) ~[?:1.8.0_60]
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649) ~[?:1.8.0_60]
    at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.parseXmlSource(XlsxSaxAnalyser.java:176) ~[easyexcel-2.0.0-beta6.jar:?]
    at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:195) ~[easyexcel-2.0.0-beta6.jar:?]
    at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:91) ~[easyexcel-2.0.0-beta6.jar:?]
    at com.alibaba.excel.ExcelReader.read(ExcelReader.java:170) ~[easyexcel-2.0.0-beta6.jar:?]
    at com.alibaba.excel.read.builder.ExcelReaderSheetBuilder.doRead(ExcelReaderSheetBuilder.java:160) ~[easyexcel-2.0.0-beta6.jar:?]

这是个bug还是故意这样书写的呢?

zhuangjiaju commented 4 years ago

升级 2.0.5 版本 即可