Java Apache POI - 获取细胞匹配正则表达式的权利?

时间:2018-05-29 20:06:36

标签: java excel apache-poi

我有一个Excel电子表格,其中包含相应值单元格左侧的标签单元格。像这样:

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

我无法依赖我希望与我处理的每个电子表格位于同一静态单元格位置的值。

我想使用正则表达式来查找与我想要的值(列F)对应的标签单元格(列E),然后将值设置为变量。

我正在重构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 :(得分:1)

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();

                }                   
            }               
        }
    }