我有一个大约7000行的Excel文件。 Excel文件包含目录和实际内容数据,详情如下。
我想避免内容列表的所有行,并从实际内容数据开始阅读。这是因为如果我需要读取“CPU_INFO”的数据,则循环和搜索字符串出现两次1]来自内容表和2]来自实际内容。
所以我想知道是否有任何方法可以指向Start Row Index开始读取Excel File的数据内容,从而跳过整个Table Of Content Section?
答案 0 :(得分:1)
取自Apache POI documentation on iterating over rows and cells:
在某些情况下,在迭代时,您需要完全控制缺失或空白行或单元格的处理方式,并且您需要确保访问每个单元格而不仅仅是文件中定义的单元格。 (CellIterator将仅返回文件中定义的单元格,主要是具有值或样式的单元格,但它取决于Excel)。
在这些情况下,您应该获取一行的第一个和最后一个列信息,然后调用getCell(int,MissingCellPolicy)来获取该单元格。使用MissingCellPolicy来控制处理空白或空单元格的方式。
如果我们从该文档中获取示例代码,并根据您在第7000行开始的要求调整它,并假设您不想超过15k行,我们得到:
// Decide which rows to process
int rowStart = Math.min(7000, sheet.getFirstRowNum());
int rowEnd = Math.max(1500, sheet.getLastRowNum());
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row r = sheet.getRow(rowNum);
int lastColumn = Math.max(r.getLastCellNum(), MY_MINIMUM_COLUMN_COUNT);
for (int cn = 0; cn < lastColumn; cn++) {
Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
if (c == null) {
// The spreadsheet is empty in this cell
} else {
// Do something useful with the cell's contents
}
}
}