1. 程式人生 > >java基於poi的excel表格處理(自定義註解、針對List與enum進行處理)

java基於poi的excel表格處理(自定義註解、針對List與enum進行處理)

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();

}