Как найти данные на основе значений нескольких столбцов в Excel с помощью apache POI

#java #excel #maven #apache-poi

#java #преуспеть #мавен #apache-poi

Вопрос:

Я использую apache poi для чтения и записи значений в файл Excel с помощью Java. У меня есть файл Excel ниже, из этого файла мне нужно извлечь данные, которые соответствуют моим требуемым критериям.

Приложение CaseID FeeType Комментарии
AppA 1234 Безопасность Добавить комментарии
AppB 1235 Другое Создан случай
AppA 1236 Безопасность Добавлены комментарии

В моем коде я хочу получить все случаи, которые подпадают под следующие критерии: приложение, установленное на «AppA», тип платы, установленный на «Безопасность», и комментарии с помощью «Добавить комментарии».

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

 ArrayList<Object> ApplicationCases = new ArrayList<Object>();

    for (Row row : sheetName) {
        for (Cell cell : row) {
            if (cell.getCellType() == CellType.STRING) {
                if (cell.getRichStringCellValue().getString().trim().equals(requiredCellContent1)) {
                    int rowNumber = row.getRowNum();

                    XSSFRow row1 = sheetName.getRow(rowNumber);
                    XSSFCell selectedCellValue = null;

                    short cellcount = row1.getLastCellNum();

                    for (int i = 0; i < cellcount; i  ) {

                        if (row1.getCell(i).getRichStringCellValue().getString().trim()
                                .equals(requiredCellContent2)) {
                            selectedCellValue = row1.getCell(1);
                            ApplicationCases.add(selectedCellValue);

                        } else if (selectedCellValue == null || row1.getCell(i).getCellType() == CellType.BLANK) {
                        }
                    }
}
}
 

Ответ №1:

Можете ли вы сделать что-то вроде приведенного ниже

 Iterator<Row> rows = sheet.rowIterator();
while(rows.hasNext()) {
    Row row = rows.next();
    String app = row.getCell(0).getRichStringCellValue().getString();
    String feeType = row.getCell(2).getRichStringCellValue().getString();
    String comment = row.getCell(3).getRichStringCellValue().getString();
    
    if(app.equals("AppA") amp;amp; feeType.equals("Security") amp;amp; comment.equals("Add Comments")) {
        //Here is your condition satisfied
    }
}