【发布时间】:2019-09-03 12:31:33
【问题描述】:
我正在使用 Apache POI 库将 Excel 工作表中的值读取到 Java 程序中。
我遍历表的每一行以获得我需要的值。
在对象 Row 中,有一个包含 XSSFCell 对象作为值的 TreeMap。
通常我会得到以下 TreeMap:
其中包含 key 4。该值通常是此图中选择的空字符串。
出于某种原因,对于某些对象,我得到以下 TreeMap:
键 4 丢失的地方。
两个行对象属于同一个表。
这就是我使用对象行的方式:
XSSFSheet mySheet = myWorkBook.getSheet("nameOfSheet");
Iterator<Row> rowIterator = mySheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
// here I call my method
}
【问题讨论】:
-
在
Excel文件中,并非总是存储所有可能的单元格和行。否则,每个*.xlsxExcel文件必须存储所有 1,048,576 行,并存储 16,384 个单元格。不存储没有内容或格式的单元格。那些未存储的单元格,迭代器将没有,内部_cells映射也不会包含。见poi.apache.org/components/spreadsheet/quick-guide.html#Iterator。 -
你的解释听起来很合理。但我不明白,为什么对于某些处于相同状态(格式和内容)但在不同行中的单元格,Row 对象的反应不同。我想我会使用 try/catch 来避免这个错误。
标签: java apache-poi