java基於poi的excel表格處理(自定義註解、針對List與enum進行處理)
阿新 • • 發佈:2019-01-01
Java基於poi的excel表格處理
背景:
由於網上太少有方便的工具來操作了,所以手動造了個輪子…
例子:
說明:
在欄位上新增@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();
}