Apache Пои условное форматирование - PullRequest
0 голосов
/ 09 января 2020

Мой автономный Excel уже имеет условное форматирование, примененное к каждой ячейке листа. Сейчас я пытаюсь вставить строку между уже вставленной строкой, но при смещении строки условное форматирование не сдвигается.

Например: - Я хочу вставить строку между 9 и 10,10-й строкой, к которой прикреплено условное форматирование , теперь при смещении 10-й строки смещается на 11-ю, оставляя 10-ю строку пустой, но условное форматирование не переносится на 11-ю строку, а присоединяется только к новой 10-й строке, а в 11-й строке отображается пустое условное форматирование

Мой код

private XSSFRow copyRow(XSSFSheet worksheet, int parentRowNum, int destinationRowNum) {
        // Get the source / new row
        XSSFRow newRow = worksheet.getRow(destinationRowNum);
        XSSFRow parentRow = worksheet.getRow(parentRowNum);
        try {
            int nFirstRow = destinationRowNum;
            int nLastRow = worksheet.getLastRowNum();
            int nNumToShift = 1;
            //If the row exist in destination, push down all rows by 1 else create a new row
            if (newRow != null) {
                worksheet.shiftRows(nFirstRow, nLastRow, nNumToShift);
            }
            int nNumOfCell = parentRow.getLastCellNum();
            int nFirstDstRow = nFirstRow + nNumToShift;
            int nLastDstRow = nLastRow + nNumToShift;
            for (int nRow = nFirstDstRow; nRow <= nLastDstRow; ++nRow) {
                final XSSFRow row = worksheet.getRow(nRow);
                if (row != null) {
                    String msg = "Row[" + row.getRowNum() + "] is Shifted row. ";
                    for (Cell c : row) {
                        ((XSSFCell) c).updateCellReferencesForShifting(msg);
                    }
                }
            }
        newRow = worksheet.createRow(nFirstRow);
        newRow.setHeight(parentRow.getHeight());
        for (int i = 0; i < nNumOfCell; i++) {
            XSSFCell oldCell = parentRow.getCell(i);
            if (null != oldCell) {
                XSSFCell newCell = newRow.createCell(i);
                newCell.setCellStyle(oldCell.getCellStyle());
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return newRow;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...