|
|
|
|
@ -2,24 +2,37 @@ package com.biutag.supervision.service;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil; |
|
|
|
|
import com.alibaba.excel.write.handler.CellWriteHandler; |
|
|
|
|
import com.alibaba.excel.write.handler.RowWriteHandler; |
|
|
|
|
import com.alibaba.excel.write.handler.context.CellWriteHandlerContext; |
|
|
|
|
import com.alibaba.excel.write.handler.context.RowWriteHandlerContext; |
|
|
|
|
import org.apache.poi.ss.usermodel.Cell; |
|
|
|
|
import org.apache.poi.ss.usermodel.CellStyle; |
|
|
|
|
import org.apache.poi.ss.usermodel.Font; |
|
|
|
|
import org.apache.poi.ss.usermodel.HorizontalAlignment; |
|
|
|
|
import org.apache.poi.ss.usermodel.IndexedColors; |
|
|
|
|
import org.apache.poi.ss.usermodel.RichTextString; |
|
|
|
|
import org.apache.poi.ss.usermodel.Row; |
|
|
|
|
import org.apache.poi.ss.usermodel.VerticalAlignment; |
|
|
|
|
import org.apache.poi.ss.usermodel.Workbook; |
|
|
|
|
import org.apache.poi.xssf.usermodel.XSSFColor; |
|
|
|
|
import org.apache.poi.xssf.usermodel.XSSFFont; |
|
|
|
|
|
|
|
|
|
public class ModifiedVerifyContentCellWriteHandler implements CellWriteHandler { |
|
|
|
|
public class ModifiedVerifyContentCellWriteHandler implements CellWriteHandler, RowWriteHandler { |
|
|
|
|
|
|
|
|
|
private static final int MODIFIED_VERIFY_CONTENT_COLUMN_INDEX = 6; |
|
|
|
|
private static final int FINAL_WRITE_ORDER = 60000; |
|
|
|
|
private static final int ESTIMATED_CHARACTERS_PER_LINE = 55; |
|
|
|
|
private static final float ROW_HEIGHT_PER_LINE = 20F; |
|
|
|
|
|
|
|
|
|
private Font labelFont; |
|
|
|
|
private Font arrowFont; |
|
|
|
|
private CellStyle wrappedStyle; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public int order() { |
|
|
|
|
return FINAL_WRITE_ORDER; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void afterCellDispose(CellWriteHandlerContext context) { |
|
|
|
|
if (Boolean.TRUE.equals(context.getHead()) |
|
|
|
|
@ -47,11 +60,28 @@ public class ModifiedVerifyContentCellWriteHandler implements CellWriteHandler {
|
|
|
|
|
} |
|
|
|
|
offset += line.length() + 1; |
|
|
|
|
} |
|
|
|
|
float requiredHeight = Math.max(cell.getRow().getHeightInPoints(), lines.length * 18F); |
|
|
|
|
cell.getRow().setHeightInPoints(requiredHeight); |
|
|
|
|
cell.setCellValue(richText); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public void afterRowDispose(RowWriteHandlerContext context) { |
|
|
|
|
if (Boolean.TRUE.equals(context.getHead())) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
Row row = context.getRow(); |
|
|
|
|
Cell contentCell = row.getCell(MODIFIED_VERIFY_CONTENT_COLUMN_INDEX); |
|
|
|
|
if (contentCell == null || StrUtil.isBlank(contentCell.getStringCellValue())) { |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
String[] lines = contentCell.getStringCellValue().split("\\n", -1); |
|
|
|
|
int visualLineCount = 0; |
|
|
|
|
for (String line : lines) { |
|
|
|
|
visualLineCount += Math.max(1, (line.length() + ESTIMATED_CHARACTERS_PER_LINE - 1) |
|
|
|
|
/ ESTIMATED_CHARACTERS_PER_LINE); |
|
|
|
|
} |
|
|
|
|
row.setHeightInPoints(Math.max(row.getHeightInPoints(), visualLineCount * ROW_HEIGHT_PER_LINE)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private Font getLabelFont(Workbook workbook) { |
|
|
|
|
if (labelFont == null) { |
|
|
|
|
labelFont = workbook.createFont(); |
|
|
|
|
@ -79,7 +109,10 @@ public class ModifiedVerifyContentCellWriteHandler implements CellWriteHandler {
|
|
|
|
|
wrappedStyle = workbook.createCellStyle(); |
|
|
|
|
wrappedStyle.cloneStyleFrom(cell.getCellStyle()); |
|
|
|
|
wrappedStyle.setWrapText(true); |
|
|
|
|
wrappedStyle.setVerticalAlignment(VerticalAlignment.TOP); |
|
|
|
|
wrappedStyle.setAlignment(HorizontalAlignment.LEFT); |
|
|
|
|
} |
|
|
|
|
cell.setCellStyle(wrappedStyle); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|