POI: использование шаблона Excel с условным форматированием - PullRequest
0 голосов
/ 27 мая 2020

Я новичок в использовании Apache Пои. У меня возникли вопросы об использовании существующего файла xlsx в качестве шаблона, когда он имеет условное форматирование.

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

Я использую Poi для добавления данных в файл.

Открываю шаблон, добавляю данные в соответствующие ячейки, сохраняю файл как новый.


    InputStream inputStream = getClass().getClassLoader().getResourceAsStream(xlsTemplate);

    XSSFWorkbook workbook = XSSFWorkbookFactory.createWorkbook(inputStream);

    var tmpSheet = workbook.getSheetAt(0);
    int rowCount = tmpStartRow;

    for(var tmpRow : tmpList) {

        Row row = tmpSheet.getRow(rowCount++);

        int columnCount = tmpStartCol;

        var tmpMap = tmpRow.objectToMap();

        int x = columnCount;
        for(var entry : tmpMap.entrySet()) {

            Cell cell = row.getCell(x);

            var value = "";
            if(entry.getValue() != null)
                value = (String)entry.getValue();

            try {
                var dblVal = Double.valueOf(value);
                cell.setCellValue(dblVal);
            }catch(Exception e) {
                cell.setCellValue(value);
            }
            x++;
        }
    }

    var evaluator = workbook.getCreationHelper().createFormulaEvaluator();
    evaluator.evaluateAll();
    workbook.setForceFormulaRecalculation(true);

    inputStream.close();        

    try (FileOutputStream outputStream = new FileOutputStream(xlsFileName)) {
        workbook.write(outputStream);
        workbook.close();
        outputStream.flush();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

Когда я открываю новый файл, Excel не выдает ошибок.

После при просмотре рабочего листа в ячейках есть данные в соответствующих полях, но форматирование из шаблона не было задано.

Когда я нажимаю «Управление правилами» в разделе условного форматирования, я вижу, что правила все еще остаются там.

Когда я нажимаю на ячейку в электронной таблице и щелкаю по строке формул, а затем щелкаю прочь, запускается условное форматирование.

Как заставить Poi обрабатывать условное форматирование для меня? Нужно ли мне изменять условное форматирование, даже если оно уже существует в шаблоне?

Заранее благодарим за помощь ..

SA

...