获弃 发表于 2025-6-8 22:00:24

Easyexcel(7-自定义样式)

注解

@ContentStyle

用于设置内容格式注解,可作用于类和字段上

[*]dataFormat:日期格式
[*]hidden:设置单元格使用此样式隐藏
[*]locked:设置单元格使用此样式锁定
[*]quotePrefix:在单元格前面增加`符号,数字或公式将以字符串形式展示
[*]horizontalAlignment:设置是否水平居中
[*]wrapped:设置文本是否应换行。将此标志设置为true通过在多行上显示使单元格中的所有内容可见
[*]verticalAlignment:设置是否垂直居中
[*]rotation:设置单元格中文本旋转角度。03版本的Excel旋转角度区间为-90°90°,07版本的Excel旋转角度区间为0°180°
[*]indent:设置单元格中缩进文本的空格数
[*]borderLeft:设置左边框的样式
[*]borderRight:设置右边框样式
[*]borderTop:设置上边框样式
[*]borderBottom:设置下边框样式
[*]leftBorderColor:设置左边框颜色
[*]rightBorderColor:设置右边框颜色
[*]topBorderColor:设置上边框颜色
[*]bottomBorderColor:设置下边框颜色
[*]fillPatternType:设置填充类型
[*]fillBackgroundColor:设置背景色
[*]fillForegroundColor:设置前景色
[*]shrinkToFit:设置自动单元格自动大小
@ContentFontStyle

用于设置单元格内容字体格式的注解,可作用于类和字段上

[*]fontName:字体名称
[*]fontHeightInPoints:字体高度
[*]italic:是否斜体
[*]strikeout:是否设置删除水平线
[*]color:字体颜色
[*]typeOffset:偏移量
[*]underline:下划线
[*]bold:是否加粗
[*]charset:编码格式
@HeadStyle

用于设置标题样式,可作用于类和字段上

[*]dataFormat:日期格式
[*]hidden:设置单元格使用此样式隐藏
[*]locked:设置单元格使用此样式锁定
[*]quotePrefix:在单元格前面增加`符号,数字或公式将以字符串形式展示
[*]horizontalAlignment:设置是否水平居中
[*]wrapped:设置文本是否应换行。将此标志设置为true通过在多行上显示使单元格中的所有内容可见
[*]verticalAlignment:设置是否垂直居中
[*]rotation:设置单元格中文本旋转角度。03版本的Excel旋转角度区间为-90°90°,07版本的Excel旋转角度区间为0°180°
[*]indent:设置单元格中缩进文本的空格数
[*]borderLeft:设置左边框的样式
[*]borderRight:设置右边框样式
[*]borderTop:设置上边框样式
[*]borderBottom:设置下边框样式
[*]leftBorderColor:设置左边框颜色
[*]rightBorderColor:设置右边框颜色
[*]topBorderColor:设置上边框颜色
[*]bottomBorderColor:设置下边框颜色
[*]fillPatternType:设置填充类型
[*]fillBackgroundColor:设置背景色
[*]fillForegroundColor:设置前景色
[*]shrinkToFit:设置自动单元格自动大小
@HeadFontStyle

用于定制标题字体格式,可作用于类和字段上

[*]fontName:设置字体名称
[*]fontHeightInPoints:设置字体高度
[*]italic:设置字体是否斜体
[*]strikeout:是否设置删除线
[*]color:设置字体颜色
[*]typeOffset:设置偏移量
[*]underline:设置下划线
[*]charset:设置字体编码
[*]bold:设置字体是否加粗
类方法


AbstractCellStyleStrategy

通过继承AbstractCellStyleStrategy类,实现其setHeadCellStyle和setContentCellStyle方法可以自定义设置表头和单元格内容样式
public abstract class AbstractCellStyleStrategy implements CellWriteHandler {

    @Override
    public int order() {
      return OrderConstant.DEFINE_STYLE;
    }

    @Override
    public void afterCellDispose(CellWriteHandlerContext context) {
      if (context.getHead() == null) {
            return;
      }
      if (context.getHead()) {
            setHeadCellStyle(context);
      } else {
            setContentCellStyle(context);
      }
    }

    /**
   * 设置表头样式
   */
    protected void setHeadCellStyle(CellWriteHandlerContext context) {
      setHeadCellStyle(context.getCell(), context.getHeadData(), context.getRelativeRowIndex());
    }

    /**
   * 设置表头样式
   */
    protected void setHeadCellStyle(Cell cell, Head head, Integer relativeRowIndex) {
      throw new UnsupportedOperationException("Custom styles must override the setHeadCellStyle method.");
    }

    /**
   * 设置单元格内容样式
   */
    protected void setContentCellStyle(CellWriteHandlerContext context) {
      setContentCellStyle(context.getCell(), context.getHeadData(), context.getRelativeRowIndex());
    }

    /**
   * 设置单元格内容样式
   */
    protected void setContentCellStyle(Cell cell, Head head, Integer relativeRowIndex) {
      throw new UnsupportedOperationException("Custom styles must override the setContentCellStyle method.");
    }
}HorizontalCellStyleStrategy

HorizontalCellStyleStrategy 是提供的一个水平样式策略,只需实现CellWriteHandlerContext类自定义样式即可,通过设置构建这个策略对象基本上可以满足一般的要求了,比如:设置表头和内容的边框、底色、对齐方式、文字字体、文字颜色、文字大小等。设置完之后,需要创建 HorizontalCellStyleStrategy 对象,然后在导出文件时注册这个策略的 handler 即可。
Getter@Setter@EqualsAndHashCodepublic class HorizontalCellStyleStrategy extends AbstractCellStyleStrategy {    private WriteCellStyle headWriteCellStyle;    private List contentWriteCellStyleList;    public HorizontalCellStyleStrategy() {    }    public HorizontalCellStyleStrategy(WriteCellStyle headWriteCellStyle,      List contentWriteCellStyleList) {      this.headWriteCellStyle = headWriteCellStyle;      this.contentWriteCellStyleList = contentWriteCellStyleList;    }    public HorizontalCellStyleStrategy(WriteCellStyle headWriteCellStyle, WriteCellStyle contentWriteCellStyle) {      this.headWriteCellStyle = headWriteCellStyle;      if (contentWriteCellStyle != null) {            this.contentWriteCellStyleList = ListUtils.newArrayList(contentWriteCellStyle);      }    }    /**   * 设置表头样式   */    @Override    protected void setHeadCellStyle(CellWriteHandlerContext context) {      if (stopProcessing(context) || headWriteCellStyle == null) {            return;      }      WriteCellData cellData = context.getFirstCellData();      WriteCellStyle.merge(headWriteCellStyle, cellData.getOrCreateStyle());    }    /**   * 设置单元格内容样式   */    @Override    protected void setContentCellStyle(CellWriteHandlerContext context) {      if (stopProcessing(context) || CollectionUtils.isEmpty(contentWriteCellStyleList)) {            return;      }      WriteCellData cellData = context.getFirstCellData();      if (context.getRelativeRowIndex() == null || context.getRelativeRowIndex()
页: [1]
查看完整版本: Easyexcel(7-自定义样式)