Мой автономный 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;
}