У меня проблема с итерацией по строкам и ячейкам в excel с помощью java. У меня есть данные, структурированные в листе таким образом:Как получить значение ячейки без перемещения итератора вперед - Excel, Java POI
Я должен собрать все цифры и передать его в конструктор. Я пробовал так:
Iterator<Row> iterator = firstSheet.iterator();
while (iterator.hasNext()){
Row nextRow = iterator.next();
Iterator<Cell> cellIterator = nextRow.cellIterator();
int id = (int) cellIterator.next().getNumericCellValue();
int pr = (int) cellIterator.next().getNumericCellValue();
int[] prId = new int[2];
prId[0] = (int) cellIterator.next().getNumericCellValue();
iterator.next(); // i have to move down one row to get 5 and 6
precId[1] = // what should I type here?? cellIterator.next() will cause, that cell with value "5" will be omitted and I will get "6"
int co = (int) cellIterator.next().getNumericCellValue();
list.add(new Rule(id, pr, prId, co));
}
Как с этим бороться? Заранее спасибо :)
EDIT:
я решил получить клетки в другой форме:
for(int rowNum = rowStart+1; rowNum < rowEnd; rowNum++){
Row r = sheet.getRow(rowNum);
if(r == null){
continue;
}
int lastColumn = Math.max(r.getLastCellNum(), 4);
for(int cn = 0; cn < lastColumn; cn++){
@SuppressWarnings("deprecation")
Cell c = r.getCell(cn, Row.RETURN_BLANK_AS_NULL);
if(c == null){
continue;
}else{
System.out.println(c);
}
}
}
Это решение явно лучше, но у меня есть проблема, потому что вместо значения показывают клетки с помощью System.out.println(c)
я необходимо передать это значение конструктору, как в примере с итераторами. Но теперь у меня есть доступ к ячейке с использованием цикла, поэтому я не могу получить значение следующей ячейки, используя .next() или sth аналогично - я не могу получить следующую ячейку в одной строке кода, поэтому, как создать тот же объект как и выше (с итератором), но используя этот код?
«Как получить значение ячейки без перемещения вперед» сохранить значение перед перемещением? – Moira
@ 1blustone Я не знаю, как получить это значение. Прочитайте мое объяснение, а не только титил :) – pulpet112
Я сделал, поэтому я сказал, чтобы сохранить его. В чем проблема с продолжением итератора? У вас есть строка, подобная 'Cell stored = cellIterator.next()', а затем использовать ее для 'precId [1]'? или я не понял правильно – Moira