POI中創建條件格式後使用aspose轉換爲PDF時,顏色不正常的問題

場景:使用一個EXCEL模板,其中創建了一些條件格式,通過EASYPOI進行模板填充,使用FE模板指令,複製填充了一些行,同時複製了這些行中存在的條件格式。

現象:打開EXCEL,條件格式是正常的,但是隨後通過ASPOSE CELLS將XLSX轉換爲PDF,會發現新創建的條件格式的長短、顏色都不正常

解決方法一:在EXCEL中打開文件後,修改並保存一次,再轉換爲PDF

解決方法二:不要新增條件格式,FE的時候,向原有條件格式中增加新的範圍

@@@Code

private void copyConditionalFormatting(Sheet sheet, Cell cell, Cell newCell) {
if (!templateParams.isEnableCopyConditionalFormatting())
return;
if (null == cell)
return;
//todo:
同一行的規則,可按行復制
if (cell.getAddress().equals(newCell.getAddress()))
return;
int c = sheet.getSheetConditionalFormatting().getNumConditionalFormattings();
for (int i = 0; i < c; i++) {
ConditionalFormatting cf = sheet.getSheetConditionalFormatting().getConditionalFormattingAt(i);
for (CellRangeAddress fr : cf.getFormattingRanges()) {
if (fr.getFirstColumn() <= cell.getColumnIndex() && fr.getLastColumn() >= cell.getColumnIndex() && fr.getFirstRow() <= cell.getRowIndex() && fr.getLastRow() >= cell.getRowIndex()) {
//
將單元格添加到規則中
// List<CellRangeAddress> newRanges = new ArrayList<CellRangeAddress>();
// for (CellRangeAddress range : cf.getFormattingRanges()) {
// newRanges.add(range);
// }
// newRanges.add(new CellRangeAddress(newCell.getRowIndex(), newCell.getRowIndex(), newCell.getColumnIndex(), newCell.getColumnIndex()));
// cf.setFormattingRanges(newRanges.toArray(new CellRangeAddress[newRanges.size()]));
cf.setFormattingRanges(addCell(cf.getFormattingRanges(),newCell));
break; //
不考慮其它規則,先解決問題,向原範圍中添加新地址

//新添加的條件格式,需要在EXCEL中打開,修改工作表後保存纔會生效,否則 轉PDF時會出現問題
// CellRangeAddress[] x = new CellRangeAddress[]{
// new CellRangeAddress(newCell.getRowIndex(), newCell.getRowIndex(), newCell.getColumnIndex(), newCell.getColumnIndex())
// };
// for (int r = 0; r < cf.getNumberOfRules(); r++) {
// sheet.getSheetConditionalFormatting().addConditionalFormatting(x, cf.getRule(r));
// //System.out.println(String.format("
複製條件格式成功%s,%s,現有條件格式:%d",cell.getAddress().toString(),x[0].formatAsString(), sheet.getSheetConditionalFormatting().getNumConditionalFormattings()));
// }
}
}
}
}

 

@@#

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章