@ResponseExcel(writeHandler={CustomCellStyleWriteHandler.class})
public List<excelVO> download(){
};


工具类:
import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
import com.alibaba.excel.write.metadata.holder.WriteTableHolder;
import org.apache.poi.ss.usermodel.*;

public class CustomCellStyleWriteHandler implements RowWriteHandler {

private CellStyle headerCellStyle;
private CellStyle contentCellStyle;
private Workbook workbook;

@Override
public void afterRowDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
Row row, Integer relativeRowIndex, Boolean isHead) {
if (row != null) {
if (workbook == null) {
workbook = writeSheetHolder.getSheet().getWorkbook();
// 初始化样式
headerCellStyle = workbook.createCellStyle();
Font font = workbook.createFont();
font.setFontName("宋体");
short fontSize = Short.parseShort("12");
font.setFontHeightInPoints(fontSize);
font.setBold(true);
headerCellStyle.setFont(font);
// 背景色 - 灰色 (25% 灰度)
headerCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
headerCellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);

// 水平和垂直居中
headerCellStyle.setAlignment(HorizontalAlignment.CENTER);
headerCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);

// 设置上边框为细实线
headerCellStyle.setBorderTop(BorderStyle.THIN);
headerCellStyle.setBorderBottom(BorderStyle.THIN);
headerCellStyle.setBorderLeft(BorderStyle.THIN);
headerCellStyle.setBorderRight(BorderStyle.THIN);
// 设置所有边框颜色为黑色(可选)
headerCellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
headerCellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
headerCellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
headerCellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
// 启用自动换行
headerCellStyle.setWrapText(true);
// 初始化样式
contentCellStyle = workbook.createCellStyle();
// 水平和垂直居中
contentCellStyle.setAlignment(HorizontalAlignment.CENTER);
contentCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
// 启用自动换行
contentCellStyle.setWrapText(true);

row.setHeight((short) 600);
}

// 为整行的每个单元格设置样式
for (int i = 0; i < row.getLastCellNum(); i++) {
Cell cell = row.getCell(i);
if (cell != null) {
cell.setCellStyle(isHead ? headerCellStyle : contentCellStyle);
}
}
}
}

// 其他方法保持默认实现
@Override
public void beforeRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
Integer rowIndex, Integer relativeRowIndex, Boolean isHead) {
}

@Override
public void afterRowCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder,
Row row, Integer relativeRowIndex, Boolean isHead) {
}

}

 

posted on 2025-06-20 17:48  茫无所知  阅读(40)  评论(0)    收藏  举报