【发布时间】:2018-07-11 05:45:03
【问题描述】:
我正在尝试使用 Apache POI 读取旧的(2007 年之前和 XLS)Excel 文件。我的程序走到行的末尾并向上迭代,直到找到既不是空也不是空的东西。然后它会重复几次并抓取这些单元格。这个程序可以很好地阅读在 Office 2010 中制作的 XLSX 和 XLS 文件。
我收到以下错误消息:
Exception in thread "main" java.lang.NumberFormatException: empty String
at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
at java.lang.Double.parseDouble(Unknown Source)
在线:
num = Double.parseDouble(str);
来自代码:
str = cell.toString();
if (str != "" || str != null) {
System.out.println("Cell is a string");
num = Double.parseDouble(str);
} else {
System.out.println("Cell is numeric.");
num = cell.getNumericCellValue();
}
cell 是文档中最后一个不为空或不为空的单元格。当我尝试打印第一个不为空或 null 的单元格时,它什么也不打印,所以我认为我没有正确访问它。
【问题讨论】:
-
为什么不使用单元格类型来识别它是字符串还是数字还是空?
-
我试过了,当我这样做时它会返回一个答案,当我将它视为返回的答案时,单元格仍显示为“空白”。我打开了它的引用的 excel 文件,数字是正确的,它试图读取的单元格不是空白的。
-
你确定你不是一个人吗? Excel 从 A1 开始,POI 从第 0 行第 0 列开始。(POI 具有将 excel 引用转换为行/列以避免此类错误的实用方法)
-
我实际上是通过将它踩了几个空格来检查这个想法。数据从第 54 行或类似的地方开始,一直运行到第 10 行,我将其回滚到 40 行,但它仍然在每个行上都返回“”。
标签: java excel apache-poi