Java Apache POI - Получить значение ячейки справа от ячейки Соответствует регулярному выражению? - PullRequest
0 голосов
/ 29 мая 2018

У меня есть таблица Excel, которая заполнена ячейками меток слева от соответствующих ячеек значений.Например:

     E                  F
3    Invoice Number     "ABC123"
4    Issue Date         "2018-04-01"
5    Amount Due          298.43

Я не могу полагаться на значения, которые я хочу, чтобы они находились в одной и той же статической ячейке с каждой обрабатываемой электронной таблицей.

Я хочу использовать регулярное выражение для поиска ячейки метки(столбец E), который соответствует значению, которое я хочу (столбец F), затем установите значение для переменной.

Я выполняю рефакторинг в Java (используя библиотеку Apache POI) устаревшего кода, изначально написанного с использованием Python.Код Python использует следующий синтаксис для достижения вышеуказанной цели:

for row in range(startrow, row+1):
    if str(rowdata[0].lower().find("invoice number")) > -1:
       invoice_number = rowdata[i+1] 

Я не могу найти эквивалентную функциональность в документации по Apache POI.Пример псевдокода того, что я пытаюсь сделать:

String invoiceNumber;
Iterator<Row> rowIterator = sheet.iterator;
while(rowIterator.hasNext()) {
    Row row = rowIterator.next();
    Iterator<Cell> = row.cellIterator();
    while(cellIterator.hasNext()) {
        if (cell.matches("invoice number") {
             invoiceNumber = cell + 1
        }
    }
}

Любой толчок в правильном направлении будет принят с благодарностью.

1 Ответ

0 голосов
/ 29 мая 2018
String invoiceNumber ;
    Iterator<Sheet> sheetIt = wb.sheetIterator();
    while (sheetIt.hasNext()) {
        Sheet sheet= sheetIt.next();
        Iterator<Row> rowIterator = sheet.rowIterator();            
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();
            Iterator<Cell> cellIt = row.cellIterator();
            while (cellIt.hasNext()) {
                Cell cell = cellIt.next();
                if(cell.getStringCellValue().equals("Invoice Number")) {
                    invoiceNumber=  row.getCell(cell.getColumnIndex()+1).getStringCellValue();

                }                   
            }               
        }
    }
...