
注解
package com.baidu.activitidemo.annotation;
import com.baidu.activitidemo.handler.ExcelRemarkHandler;
import java.lang.annotation.*;
/**
* 设置表头的批注, 需要配合{@link ExcelRemarkHandler}使用
*
* @author li
* @date 2022/09/24
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ExcelRemark {
/**
* 一般使用此属性的值进行批注的填充
*
* @return {@link String[]}
*/
String value() default "";
/**
* 慎用此属性,建议使用value
* 此处值应为一个SpEL,返回值需要是一个String
* 此表达式若有值(无论是否调用是否成功),则会忽略value属性
* 使用示例:#root.getBean('userService')?.getSelectedList('2')
* 此处的使用示例中的 #root指的是applicationContext
*
* @return {@link String}
*/
String dynamicAccess() default "";
/**
* 批注所在行,一般不用设置,代码自动判断
* -1表示自动获取头的最后一个行
*
* @return int
*/
int remarkRow() default -1;
/**
* 批注行高, 一般不用设置
*
* @return
*/
int remarkRowHigh() default 0;
/**
* 批注列宽, 根据导出情况调整
*
* @return
*/
int remarkColumnWide() default 0;
}
Handler
package com.baidu.activitidemo.handler;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.write.handler.RowWriteHandler;
import com.alibaba.excel.write.handler.context.RowWriteHandlerContext;
import com.baidu.activitidemo.annotation.ExcelRemark;
import com.baidu.activitidemo.config.SpringContextUtil;
import lombok.Data;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFRichTextString;
import org.springframework.expression.Expression;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.util.CollectionUtils;
import java.lang.reflect.Field;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
/**
*