##### 2.3.4 Excel导入介绍 有导出就有导入,基于注解的导入导出,配置配置上是一样的,只是方式反过来而已,比如类型的替换 导出的时候是1替换成男,2替换成女,导入的时候则反过来,男变成1 ,女变成2,时间也是类似 导出的时候date被格式化成 2017-8-25 ,导入的时候2017-8-25被格式成date类型 下面说下导入的基本代码,注解啥的都是上面讲过了,这里就不累赘了 ~~~ @Test public void test2() { ImportParams params = new ImportParams(); params.setTitleRows(1); params.setHeadRows(1); long start = new Date().getTime(); List<MsgClient> list = ExcelImportUtil.importExcel( new File(PoiPublicUtil.getWebRootPath("import/ExcelExportMsgClient.xlsx")), MsgClient.class, params); System.out.println(new Date().getTime() - start); System.out.println(list.size()); System.out.println(ReflectionToStringBuilder.toString(list.get(0))); } ~~~ 基本是写法也很简单,ImportParams 参数介绍下 | 属性 | 类型 | 默认值 | 功能 | | --- | --- | --- | --- | | titleRows| int | 0| 表格标题行数,默认0| | headRows | int| 1 | 表头行数,默认1| | startRows| int| 0|字段真正值和列标题之间的距离 默认0| | ***keyIndex***| int| 0 | ***主键设置,如何这个cell没有值,就跳过 或者认为这个是list的下面的值*** 这一列必须有值,不然认为这列为无效数 | | startSheetIndex| int | 0| 开始读取的sheet位置,默认为0| | sheetNum| int| 1| 上传表格需要读取的sheet 数量,默认为1| | needSave| boolean| false| 是否需要保存上传的Excel| | needVerfiy| boolean| false| 是否需要校验上传的Excel | | saveUrl | String| "upload/excelUpload"| 保存上传的Excel目录,默认是 如 TestEntity这个类保存路径就是 upload/excelUpload/Test/yyyyMMddHHmss***\*** 保存名称上传时间*五位随机数 | | verifyHanlder| IExcelVerifyHandler| null| 校验处理接口,自定义校验 | | lastOfInvalidRow | int| 0 | 最后的无效行数,不读的行数 | | readRows | int| 0| 手动控制读取的行数| | importFields| String\[\]| null | 导入时校验数据模板,是不是正确的Excel| | keyMark | String| ":"| Key-Value 读取标记,以这个为Key,后面一个Cell 为Value,多个改为ArrayList| | readSingleCell | boolean | false| 按照Key-Value 规则读取全局扫描Excel,但是跳过List读取范围提升性能 仅仅支持titleRows + headRows + startRows 以及 lastOfInvalidRow| | dataHanlder | IExcelDataHandler| null| 数据处理接口,以此为主,replace,format都在这后面