考虑以下我的excelSheet的屏幕截图
现在考虑下面的代码,该代码将迭代每一行,然后迭代每个单元格,然后打印单元格值。
public void excelData2(int sheetNo) {
Iterator<Row> rowIterator = workbook.getSheetAt(sheetNo).rowIterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Iterator<Cell> cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
String cellValue = dataFormatter.formatCellValue(cell);
System.out.print(cellValue + "\t");
}
System.out.println();
}
}
实际上,通过查看excel表,我们可以看到正确的2行1列!!
因此,第一个while
循环按预期进行了两次迭代:),但内部while
的{{1}}循环则循环了26次而不是1次,即使下一个单元格有没有任何价值。理想情况下,在第二次迭代中cellIterator
应该给出错误的权利?为什么它直到26次才给出真正的价值?有人有主意吗?
注意:我不想放置诸如cellIterator.hasNext()
或isEmpty()
等的条件。
注意2:我想到了另一个解决方案,我可以解决。但是我想知道为什么会这样。
答案 0 :(得分:2)
答案 1 :(得分:-1)
你可以使用这个并且可以跳过一次空白:
var abc = [{
type: "manager",
members: [{
name: "bob"
}, {
name: "rob"
}],
},
{
type: "clerk",
members: [{
name: "foo"
}, {
name: "bar"
}],
},
];
const result = abc.map((obj) => {
const isExist = obj.members.find((o) => o.name === "bob");
if (isExist) isExist.isBob = true;
return obj;
});
console.log(result);