java基于poi的excel表格处理(自定义注解、针对List与enum进行处理)

来源:互联网 发布:jsp无法import java类 编辑:程序博客网 时间:2024/06/06 09:44

Java基于poi的excel表格处理

背景:

由于网上太少有方便的工具来操作了,所以手动造了个轮子…

例子:

例子1

例子2

说明:

在字段上添加@ExcelInfo注解,其中row为“行数-1”,col为“列数-1”。

如需进行特殊转换,使用enumclass = EnumXXXX.class,EnumXXXX需实现ExcelInfoEnumI接口

如使用List进行映射参数,则可指定endMode,即将某行,某列或者行列方式圈选进List中

尽量使用String,避免类型转换出大bug

结果如下:

{A1=’单元格’, A2=111.0, A3=’111.0’, A4=Fri Sep 08 21:41:22 EDT 2017, A5=’1.11’, A6=’1’, A7=’null’, E9_F11=[9.0, 10.0, 10.0, 11.0]}

鄙人不才,如有些许边界性的bug未能给予正确处理还请告知

相关代码

@Documented@Target(ElementType.FIELD)@Inherited@Retention(RetentionPolicy.RUNTIME)public @interface ExcelInfo {    int row() default 0;    int col() default 0;    int rowEnd() default Integer.MAX_VALUE;    int colEnd() default Integer.MAX_VALUE;    EndModeEnum endMode() default EndModeEnum.vertical;    boolean required() default false;    Class<? extends Enum<? extends ExcelInfoEnumI>> enumclass() default ExcelInfoEnum.class;    enum ExcelInfoEnum implements ExcelInfoEnumI {        ;        @Override        public String getKey() {            return null;        }        @Override        public String getValue() {            return null;        }    }    enum EndModeEnum {        vertical(1), across(2), verticalANDacross(3);        private int mode;        EndModeEnum(int mode) {            this.mode = mode;        }        public int getMode() {            return mode;        }    }}
public interface ExcelInfoEnumI {    String getKey();    Object getValue();}

完整代码 github https://github.com/anniweiya/anniweiya-test/tree/master/excel

原创粉丝点击