为什么这个for循环不使用apachepoi遍历行?JAVA
我有一个for循环,里面有另一个循环,第一个循环设置行,第二个循环读取4个单元格,第一次循环运行时工作正常,但之后我猜它不会更改行,因为它只是重复第一个循环的结果,但不显示单元格值,代码如下:为什么这个for循环不使用apachepoi遍历行?JAVA,java,excel,for-loop,apache-poi,Java,Excel,For Loop,Apache Poi,我有一个for循环,里面有另一个循环,第一个循环设置行,第二个循环读取4个单元格,第一次循环运行时工作正常,但之后我猜它不会更改行,因为它只是重复第一个循环的结果,但不显示单元格值,代码如下: for(int k=1; k<=2; k++){ XSSFRow row1 = worksheet.getRow(e); System.out.println("Row: "+e); e++; for(int i=0;i<Oleo18_1.size();i++
for(int k=1; k<=2; k++){
XSSFRow row1 = worksheet.getRow(e);
System.out.println("Row: "+e);
e++;
for(int i=0;i<Oleo18_1.size();i++){
XSSFCell c = row1.getCell((short) d);
if (c == null || c.getCellType() == Cell.CELL_TYPE_BLANK) {
Oleo18_1.set(i, false);
}
else {
Oleo18_1.set(i, true);
c.setCellType(Cell.CELL_TYPE_STRING);
}
if(Oleo18_1.get(i) == true){
values_18_1.set(i, 9.09090909);
}
String a1Val = c.getStringCellValue();
System.out.println("valor ponderacion"+(d+1)+": "+values_18_1.get(i));
System.out.println("valor celda "+(d+1)+": "+a1Val);
d++;
}
}
for(int k=1;k因此,使用Apache POI对单元格进行迭代的最简单方法是使用中的提示符,该提示符演示了在for each循环中进行迭代,因为行是可迭代的,如下所示:
迭代行和单元格
有时,您希望只迭代一个工作表中的所有行,或一行中的所有>单元格
幸运的是,这非常简单。Row定义了一个CellIterator内部类来处理对单元格的迭代(通过调用Row.CellIterator()获得一个),Sheet提供了一个rowIterator()方法来为所有行提供一个迭代器。这些实现了java.lang.Iterable接口以允许foreach循环
Sheet sheet = wb.getSheetAt(0);
for (Row row : sheet) {
for (Cell cell : row) {
// Do something here
}
}
这其中最重要的部分实际上是“抓取”正确的工作表,正如您在代码段的第一行中所看到的,并迭代所需的部分,而不是指定要开始的行。相反,您希望有选择地操作数据,如下所示:
private void startParsing() {
for (int i = 0; i < worksheet.getPhysicalNumberOfRows(); i++) {
if (i == ROW_E || i == ROW_F) {
mutateCell(worksheet.getRow(i));
}
}
}
private void mutateCell(final Row curRow) {
for(int i=0;i<Oleo18_1.size();i++){
XSSFCell c = curRow.getCell((short) d);
if (c == null || c.getCellType() == Cell.CELL_TYPE_BLANK) {
Oleo18_1.set(i, false);
}
else {
Oleo18_1.set(i, true);
c.setCellType(Cell.CELL_TYPE_STRING);
}
if(Oleo18_1.get(i) == true){
values_18_1.set(i, 9.09090909);
}
String a1Val = c.getStringCellValue();
System.out.println("valor ponderacion"+(d+1)+": "+values_18_1.get(i));
System.out.println("valor celda "+(d+1)+": "+a1Val);
d++;
}
}
private void startParsing(){
对于(int i=0;i 对于(int i=0;i您期望的输出是什么?此外,请遵守有关变量和类的Java命名约定。@AndrewLeach该程序必须阅读E6、F6、G6、H6、I6,然后阅读E7、F7、G7、H7、I7非常感谢,我在学习如何使用poi时遇到了困难,这对我帮助很大!