public class WriteHandlerStrategy implements CellWriteHandler {
private Map<Integer, Map<Integer, Boolean>> map;
public WriteHandlerStrategy(Map<Integer, Map<Integer, Boolean>> mapMap) {
this.map = mapMap;
}
@Override
public void beforeCellCreate(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
final Row row, final Head head, final Integer columnIndex,
final Integer relativeRowIndex, final Boolean isHead) {
}
@Override
public void afterCellCreate(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
final Cell cell, final Head head, final Integer relativeRowIndex, final Boolean isHead) {
}
@Override
public void afterCellDataConverted(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
final CellData cellData, final Cell cell, final Head head,
final Integer relativeRowIndex, final Boolean isHead) {
}
@Override
public void afterCellDispose(final WriteSheetHolder writeSheetHolder, final WriteTableHolder writeTableHolder,
final List<CellData> list, final Cell cell, final Head head, final Integer integer,
final Boolean aBoolean) {
Sheet sheet = writeSheetHolder.getSheet();
Workbook workbook = sheet.getWorkbook();
int rowIndex = cell.getRowIndex();
int columnIndex = cell.getColumnIndex();
Boolean containBoo = Optional.ofNullable(map.get(rowIndex)).map(m -> m.get(columnIndex)).orElse(false);
if (containBoo) {
int length = cell.getStringCellValue().length();
// xlsx格式,如果是老版本格式的话就用 HSSFRichTextString
XSSFRichTextString richString = new XSSFRichTextString(cell.getStringCellValue());
Font font = workbook.createFont();
font.setColor(Font.COLOR_RED);
// font.setFontName(“#” + 4);
// // startIndex,endIndex
richString.applyFont(0, length, font);
// 再设置回每个单元格里
cell.setCellValue(richString);
}
}
}