easyexcel 自定义导出格式

本文介绍了如何使用easyexcel库来实现Excel文件的自定义导出,包括设置自定义下拉框、字体样式、隐藏列等个性化需求。通过引入maven依赖、定义注解、封装对象和设置导出格式,实现了复杂的Excel导出功能。
摘要由CSDN通过智能技术生成

前言

easyexcel 由于其比poi更为简单api和更高性能的情况下,easyexcel 但格式下载不符合要求。比如下载格式设置自定义下拉框,对字体进行设置,对部分列进行隐藏的个性化需求。

实践

一、引入maven依赖

<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.10</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.1.6</version>
        </dependency>

二、定义需要设置状态的注解

@Target({
   ElementType.FIELD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ExcelStyle {
   

    String fontName() default "宋体";
    short fontHeightInPoints() default 12;
    HorizontalAlignment horizontalAlignment() default HorizontalAlignment.CENTER;
    VerticalAlignment verticalAlignment() default VerticalAlignment.CENTER;
    boolean wrapText() default false;
    boolean richText() default false;
    boolean isRequire() default false;
}

三、定义需要封装对象

@Data
public class CommonCallBackData<T> {
   
    private Font font;
    private CellStyle cellStyle;
    private List<T> dataList;
    private Integer relativeRowIndex;
    private Cell cell;
    private Workbook workbook;
    private Field field;
    private ExcelStyle annotation;
    private Boolean isHead;
    private Boolean isRequire;
}

四、定义需要导出一下需要设置注解

public class BaseType {
   

    /**
     * 如果要是excel是否需要使用富文本
     * @return 是否需要使用富文本
     */
    public Boolean isGetRich(){
   
        return false;
    };


    /**
     * 设置单元格格式
     * @return 是设置单元格格式
     */
    public  Boolean isGetCellStyle(){
   
        return false;
    };
}

五、设置隐藏列和富文本和必填参数

@Slf4j
public class TitleHandler<T> implements CellWriteHandler {
   

    private Class<?> c;
    private List<T> dataList;
    private Consumer<CommonCallBackData<T>> fontConsumer;
    private Consumer<CommonCallBackData<T>> cellStyleConsumer;
    private Consumer<CommonCallBackData<T>> richTextConsumer;
    private List<Integer> hiddenColumnIndexes;


    public TitleHandler(Class<?> c, List<T> dataList, Consumer<CommonCallBackData<T>> fontConsumer,
                        Consumer<CommonCallBackData<T>> cellStyleConsumer,
                        Consumer<CommonCallBackData<T>> richTextConsumer, List<Integer> hiddenColumnIndexes) {
   
        this.c = c;
        this.fontConsumer = fontConsumer;
        this.cellStyleConsumer = cellStyleConsumer;
        this.richTextConsumer = richTextConsumer;
        this.dataList 
  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值