[
https://issues.apache.org/jira/browse/NIFI-16361?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
David Handermann updated NIFI-16361:
------------------------------------
Fix Version/s: 2.13.0
Resolution: Fixed
Status: Resolved (was: Patch Available)
> ExcelReader and SplitExcel fail on wrongly formatted cell.
> ----------------------------------------------------------
>
> Key: NIFI-16361
> URL: https://issues.apache.org/jira/browse/NIFI-16361
> Project: Apache NiFi
> Issue Type: Bug
> Reporter: Philipp Korniets
> Assignee: Daniel Stieglitz
> Priority: Major
> Fix For: 2.13.0
>
> Attachments: numeric-empty-repro.xlsx
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> {code:java}
> 2026-09-17 14:47:13,870 WARN [Timer-Driven Process Thread-4]
> o.a.n.controller.tasks.ConnectableTask Processing halted: uncaught exception
> in Component [SplitExcel[id=afd5a7ec-01a0-1000-1e4c-3db1dd039f6a]]
> java.lang.NumberFormatException: empty String at
> java.base/jdk.internal.math.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1842)
> at
> java.base/jdk.internal.math.FloatingDecimal.parseDouble(FloatingDecimal.java:110)
> at java.base/java.lang.Double.parseDouble(Double.java:792) at
> com.github.pjfanning.xlsx.impl.NumberUtil.parseDouble(NumberUtil.java:10) at
> com.github.pjfanning.xlsx.impl.StreamingCell.getNumericCellValue(StreamingCell.java:205)
> at org.apache.poi.ss.util.CellUtil.copyCell(CellUtil.java:419) at
> org.apache.nifi.processors.excel.SplitExcel.copyRows(SplitExcel.java:280) at
> org.apache.nifi.processors.excel.SplitExcel.handleXSSF(SplitExcel.java:257)
> at
> org.apache.nifi.processors.excel.SplitExcel.lambda$onTrigger$0(SplitExcel.java:194)
> at
> org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2859)
> at
> org.apache.nifi.controller.repository.WeakHashMapProcessSessionFactory$FactoryRetainingProcessSession.read(WeakHashMapProcessSessionFactory.java:260)
> at
> org.apache.nifi.processors.excel.SplitExcel.onTrigger(SplitExcel.java:191) at
> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
> at
> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1293)
> at
> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:237)
> at
> org.apache.nifi.controller.scheduling.AbstractTimeBasedSchedulingAgent.lambda$doScheduleOnce$0(AbstractTimeBasedSchedulingAgent.java:59)
> at org.apache.nifi.engine.FlowEngine.lambda$wrap$1(FlowEngine.java:105) at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
> at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317) at
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
> at
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
> at java.base/java.lang.Thread.run(Thread.java:1583){code}
> AI Explanation:
> The execution path is:
> SplitExcel.copyRows()
> → CellUtil.copyCell()
> → sourceCell.getNumericCellValue()
> → NumberUtil.parseDouble("")
> → NumberFormatException
>
> The attached workbook contains cells encoded like:
> <c s="29" t="n"><v/></c>
>
>
> That representation says “numeric cell,” but the value is an empty string.
> Apache POI therefore requests a numeric value, and the streaming XLSX
> implementation attempts:
> Double.parseDouble("")
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)