Philipp Korniets created NIFI-16361:
---------------------------------------
Summary: 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
Attachments: numeric-empty-repro.xlsx
{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)