原理:自定义一个注解,属性存放多个语言,运行时利用反射,根据选择的语言重新给@Excel的name属性赋值
1.自定义一个注解
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface ExcelName {
//这里是数组,可以放入表头的多个语言,各语言在数组的位置需固定,工具类会用到
String[] names() default {};
}
2.语言选择工具类
public class ExcelLangUtils {
/**
* easy poi导出excel表头多语言设置
*
* @param source 源类
* @param lang 语言
* @return 表头转换语言后的目标类
*/
public static Class chooseLang(Class<?> source, String lang) throws NoSuchFieldException, IllegalAccessException {
//获取所有字段
Field[] fields = source.getDeclaredFields();
if (fields.length > 0) {
for (Field field : fields) {
//获取字段的@Excel注解
Excel anoExcel = field.getAnnotation(Excel.class);