这是excel表
-----------------------------------------------------------------------
col1 | Col2 | col3 | col4 | col5| col6| col7| and so on
-----------------------------------------------------------------------
1 | 2 | 3 | 4 | 5 | 6| 7| and so on
------------------------------------------------------------------------
| | 3 | 4 | 5 | | | and so on
------------------------------------------------------------------------
我的输出应该是 空白空白3 4 5空白空白
我正在使用Iterator<Cell>
cell=row.cellIterator
阅读此Excel工作表
我想用Blank读取每个单元格的值,但是使用CellIterator
我只能从第2行读取3 4 5。
如何阅读带空格的第二行?我还看到如果第一个单元格和最后一个单元格不是空白,那么CellIterator
也会成功读取空白值。
如果该行的第一个和最后一个单元格为空,如何读取java中特定行的每个单元格值?
答案 0 :(得分:0)
我将假设您正在使用Apache POI进行Excel操作。
CellIterator只会返回文件中已定义的单元格,这主要是指具有值或格式的单元格。
迭代细胞,控制缺失/空白细胞
在某些情况下,在迭代时,您需要完全控制缺失或空白行和单元格的处理方式,并且您需要确保访问每个单元格而不仅仅是文件中定义的单元格。 (CellIterator将仅返回文件中定义的单元格,主要是具有值或样式的单元格,但它取决于Excel)。
在这些情况下,您应该获取一行的第一个和最后一个列信息,然后调用getCell(int,MissingCellPolicy)来获取该单元格。使用MissingCellPolicy控制处理空白或空单元格的方式。
// Decide which rows to process
int rowStart = Math.min(15, sheet.getFirstRowNum());
int rowEnd = Math.max(1400, sheet.getLastRowNum());
for (int rowNum = rowStart; rowNum < rowEnd; rowNum++) {
Row r = sheet.getRow(rowNum);
if (r == null) {
// This whole row is empty
// Handle it as needed
continue;
}
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
}
}
}