package com.ruoyi.common.utils;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.VerticalAlignment;
/**
* @author MR.ZHOU
*/
public class ExcelStyleTool extends AbstractColumnWidthStyleStrategy {
/**
* 设置excel样式
*/
public static HorizontalCellStyleStrategy getStyleStrategy() {
// 头的策略 样式调整
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//设置头部样式
setHeadStyle(headWriteCellStyle, true, true);
// 设置细边框
setBorder(headWriteCellStyle);
//表头字体样式
WriteFont headWriteFont = getHeadFont(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setWriteFont(headWriteFont);
// 内容的策略
WriteCellStyle contentStyle = new WriteCellStyle();
//设置内容样式
setHeadStyle(headWriteCellStyle, false, false);
// //设置边框
// setBorder(contentStyle);
//内容字体
WriteFont contentWriteFont = getContentFont();
contentStyle.setWriteFont(contentWriteFont);
// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
return new HorizontalCellStyleStrategy(headWriteCellStyle, contentStyle);
}
/**
* 获取表头字体
* @param color
* @return
*/
private static WriteFont getHeadFont(Short color){
//表头字体样式
WriteFont headWriteFont = new WriteFont();
// 头字号
headWriteFont.setFontHeightInPoints((short) 11);
// 字体样式
headWriteFont.setFontName("宋体");
// 字体颜色
headWriteFont.setColor(color);
// 字体加粗
headWriteFont.setBold(false);
return headWriteFont;
}
/**
* 获取内容字体
* @return
*/
private static WriteFont getContentFont(){
//内容字体
WriteFont contentWriteFont = new WriteFont();
// 内容字号
contentWriteFont.setFontHeightInPoints((short) 11);
// 字体样式
contentWriteFont.setFontName("宋体");
return contentWriteFont;
}
/**
*
* @param cellStyle
* @param wrappedFlag 自动换行标识,true:开启自动换行
* @param centerFlag 水平居中开关,true:开启水平居中
*/
private static void setHeadStyle(WriteCellStyle cellStyle, boolean wrappedFlag, boolean centerFlag){
// 头背景 白色
cellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
if(wrappedFlag){
// 自动换行
cellStyle.setWrapped(false);
}
if(centerFlag){
// 水平对齐方式
cellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
}
// 垂直对齐方式
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
}
/**
* 设置边框
* @param cellStyle
*/
private static void setBorder(WriteCellStyle cellStyle){
// 设置细边框
cellStyle.setBorderBottom(BorderStyle.THIN);
cellStyle.setBorderLeft(BorderStyle.THIN);
cellStyle.setBorderRight(BorderStyle.THIN);
cellStyle.setBorderTop(BorderStyle.THIN);
// 设置边框颜色 25灰度
cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
cellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
}
}
Easy excel 表头样式工具类
最新推荐文章于 2024-06-03 16:11:41 发布