gpt4 book ai didi

java - 使用 Apache POI 从 Excel 读取单元格

转载 作者:行者123 更新时间:2023-11-29 08:06:32 25 4
gpt4 key购买 nike

我正在尝试使用 Apache POI 读取旧的(2007 年之前和 XLS)Excel 文件。我的程序转到行的末尾并向上迭代,直到找到既不为 null 也不为空的内容。然后它重复几次并抓取这些单元格。该程序可以很好地读取 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 的单元格。当我尝试打印第一个非空或非空的单元格时,它什么也没打印,所以我认为我没有正确访问它。

最佳答案

您在空白单元格中阅读的原因可能是由于使用了 Apache POI 的正确子组件来读取 Excel 文件。对 XLS 格式使用 HSSF(可怕的电子表格格式),对 XLSX 格式使用 XSSF(XML 电子表格格式)。


至于代码本身,您可能想要优化 boolean 表达式。您现在的方式,因为您使用的是 or 运算符 (||),

  • if 语句的第一部分将在 str != null
  • 时执行
  • if 语句的 else 部分将在 str == null 时执行。

if 语句的第一部分将在调用 Double.parseDouble 时抛出一个 NumberFormatException 如果 str 不能被解析为一个数字。

也许下面的代码片段能帮到你:

if (str == null || str.trim().isEmpty()) {
// handle null and empty strings
} else if (cell.getType() == Cell.CELL_TYPE_NUMERIC) {
System.out.println("Cell is numeric.");
num = cell.getNumericCellValue();
} else {
// If the cell is not numeric, Double.parseDouble(str)
// will most likely throw a NumberFormatException
}

要了解有关 Cell 的更多信息,请阅读其 Javadoc .

关于java - 使用 Apache POI 从 Excel 读取单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com