как использовать ссылки на ячейки с 2 строками с apache poi

#java #apache-poi

Вопрос:

Мне нужно выполнить эти проверки, но когда я пытаюсь получить значение из строки b4, я получаю ошибку, потому что параметр строки получает строку из cellReferenceC3 «строка 3», но мне нужно из строк 3 и 4, c3 и b4

 Row row = sheet.getRow(cellReferenceC3.getRow());
 

частная логическая валидация (InputStream arquivoCancelamento) вызывает исключение IOException{

         XSSFWorkbook wb = new XSSFWorkbook(arquivoCancelamento);
        wb.setForceFormulaRecalculation(true);
        Sheet sheet = wb.getSheetAt(0);
        FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
        String celulaB3 = "Nu00FAmero do Cartu00E3o ";
        String celulaC3 = "Nu00FAmero Pedido";
        String celulaD3 = "Motivo de Cancelamento";
        String celulaE3 = "Observau00E7u00E3o";
        String celulaB4 = "";
        boolean val = false;

        CellReference cellReferenceB3 = new CellReference("B3");
        CellReference cellReferenceC3 = new CellReference("C3");
        CellReference cellReferenceD3 = new CellReference("D3");
        CellReference cellReferenceE3 = new CellReference("E3");
        CellReference cellReferenceB4 = new CellReference("B4");

        Row row = sheet.getRow(cellReferenceC3.getRow());


        Cell cellB3 = row.getCell(cellReferenceB3.getCol());
        Cell cellC3 = row.getCell(cellReferenceC3.getCol());
        Cell cellD3 = row.getCell(cellReferenceD3.getCol());
        Cell cellE3 = row.getCell(cellReferenceE3.getCol());
        Cell cellB4 = row.getCell(cellReferenceB4.getCol());


        if ((cellReferenceB3!=null amp;amp; celulaB3.equals(cellB3.getStringCellValue() ))
                amp;amp;  (cellReferenceC3!=null amp;amp; celulaC3.equals(cellC3.getStringCellValue() ))
                amp;amp; (cellReferenceD3!=null amp;amp; celulaD3.equals(cellD3.getStringCellValue() ))
                amp;amp; (cellReferenceE3!=null amp;amp; celulaE3.equals(cellE3.getStringCellValue() ))
                amp;amp; (cellReferenceB4!=null)
 

Комментарии:

1. Использовать ссылку на область ?

Ответ №1:

Почему бы не так, то есть иметь две ссылки, одну на строку 3 и одну на строку 4?

         XSSFWorkbook wb = new XSSFWorkbook(arquivoCancelamento);
        wb.setForceFormulaRecalculation(true);
        Sheet sheet = wb.getSheetAt(0);
        FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
        String celulaB3 = "Nu00FAmero do Cartu00E3o ";
        String celulaC3 = "Nu00FAmero Pedido";
        String celulaD3 = "Motivo de Cancelamento";
        String celulaE3 = "Observau00E7u00E3o";
        String celulaB4 = "";
        boolean val = false;

        CellReference cellReferenceB3 = new CellReference("B3");
        CellReference cellReferenceC3 = new CellReference("C3");
        CellReference cellReferenceD3 = new CellReference("D3");
        CellReference cellReferenceE3 = new CellReference("E3");
        CellReference cellReferenceB4 = new CellReference("B4");

        Row row3 = sheet.getRow(cellReferenceC3.getRow());

        Cell cellB3 = row3.getCell(cellReferenceB3.getCol());
        Cell cellC3 = row3.getCell(cellReferenceC3.getCol());
        Cell cellD3 = row3.getCell(cellReferenceD3.getCol());
        Cell cellE3 = row3.getCell(cellReferenceE3.getCol());

        Row row4 = sheet.getRow(cellReferenceB4.getRow());
        Cell cellB4 = row4.getCell(cellReferenceB4.getCol());