package com.sinata.system.config;
|
|
import cn.idev.excel.write.handler.context.RowWriteHandlerContext;
|
import cn.idev.excel.write.style.row.AbstractRowHeightStyleStrategy;
|
import org.apache.commons.lang3.ObjectUtils;
|
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.CellType;
|
import org.apache.poi.ss.usermodel.Row;
|
|
import java.util.Iterator;
|
|
public class CustomCellWriteHeightConfig extends AbstractRowHeightStyleStrategy {
|
|
/**
|
* 默认高度
|
*/
|
private static final Integer DEFAULT_HEIGHT = 300;
|
|
@Override
|
protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
|
|
}
|
|
@Override
|
protected void setContentColumnHeight(Row row, int relativeRowIndex) {
|
Iterator<Cell> cellIterator = row.cellIterator();
|
if (!cellIterator.hasNext()) {
|
return;
|
}
|
// 默认为 1 行高度
|
int maxHeight = 1;
|
while (cellIterator.hasNext()) {
|
Cell cell = cellIterator.next();
|
if (cell.getCellType() == CellType.STRING) {
|
String value = cell.getStringCellValue();
|
for (int i = 0; i < value.length(); i += 10) {
|
if (i + 10 < value.length()) {
|
value = value.substring(0, i) + "\n" + value.substring(i, i + 10) + value.substring(i + 10);
|
} else {
|
value = value.substring(0, i) + "\n" + value.substring(i);
|
}
|
}
|
if (value.contains("\n")) {
|
int length = value.split("\n").length;
|
maxHeight = Math.max(maxHeight, length);
|
}
|
}
|
}
|
row.setHeight((short) (maxHeight * DEFAULT_HEIGHT));
|
}
|
|
@Override
|
public void afterRowDispose(RowWriteHandlerContext context) {
|
if (context.getHead() != null) {
|
if(ObjectUtils.isEmpty(context.getRelativeRowIndex())){
|
return;
|
}
|
if (Boolean.TRUE.equals(context.getHead())) {
|
this.setHeadColumnHeight(context.getRow(), context.getRelativeRowIndex());
|
} else {
|
this.setContentColumnHeight(context.getRow(), context.getRelativeRowIndex());
|
}
|
|
}
|
}
|
}
|