几行代码,复杂Excel 导入导出
项目中使用:
功能介绍
IMPORT
1、 ExcelHandle核心处理器;
2、 ExcelWorkbookManageexcel所有工作表管理;
3、 ExcelInitConfig配置文件初始化;
4、 AbstractFileParser文件转换类;
alanpoi import有何优势初始化错误 ?
1、 用户不需要额外引入poi等繁琐的jar;
2、 毫秒级解析大文件初始化错误 ,支持一键解析多sheet页签,不需要自己按照一定的格式循环匹配解析所有数据;
3、 不管你的系统多么复杂初始化错误 ,有多少个导入,alanpoi全部支持,而且准确返回你需要的对象,减轻开发者工作量;
4、 目前外界业务越来越复杂初始化错误 ,对各个功能要求也越来越严格,当然导入也不例外,alanpoi支持错误一键回写到excel,对应到每一行;
5、 alanpoi灵活可扩展初始化错误 ,提供了ExcelConsumeInterface接口,可继承它,实现valid、error、end三个方法编写自己的业务;
A. valid: 方法参数返回excel所有数据初始化错误 ,用户可进行自我校验
B. error: 导入错误会回调
C. end: 方法参数返回校验成功的数据初始化错误 ,valid校验失败的数据不会返回,用户可以自己操作持久化或者其他业务
怎么使用alanpoi实现导入
简单一句话:一配置一继承一调用
一配置
在项目resources目录中新建excel-config.xml文件,cosume中配置自己的消费类路径初始化错误 ,继承ExcelConsumeInterface接口,sheet中的vo是把当前sheet序列化的对象路径,column中当然就是配置vo中的属性了, 其中name可选字段,填了就是按照这个匹配excel列名,不填就是按照offset顺序;导入包含多个sheet就配置多个
一继承
consume类继承ExcelConsumeInterface接口初始化错误 ,实现方法
* when error will 调用
* @param excelError
voiderror(ExcelError excelError);
voidvalidData( StringworkbookId, List<ExcelSheetData> sheetDataList, Map<Serializable, Object> excelParam);
voidend(List<ExcelSheetData> sheetDataList, Map<Serializable, Object> excelParam);
一调用
用户调用ExcelExportUtil类的customImportData即可初始化错误 ,参数excelId就是excel-conifg.xml中配置的id
Export
描叙
能够用一行代码实现绝不用第二行初始化错误 ,如果一行不行,那就再加一行!
模式
注解模式导出
ExcelSheet注解:用于导入类上初始化错误 ,可制定sheet名,列头的颜色、字体、高度、宽度
ExcelColum注解: 用于导入类的属性上初始化错误 ,可指定列头的名称,单元格的样式
DateFormat注解: 用于导入类的属性上, 可以按照指定格式输出到excel,默认"yyyy/MM/dd"
NumFormat注解: 用于导入类的属性上初始化错误 ,可以按照指定格式输出到excel,默认"00.00"
样例:
@ExcelSheet(name = "测试", backColor = AlanColors.GREEN, font = "宋体", fontSize = 25) @DatapublicclassExportVO{ @ExcelColumn(name = "名称", width = 32, link = " ${url}" ) privateString name;
@ExcelColumn(name = "值") privateString value;
@ExcelColumn(name = "金额") @NumFormat(value = "0000.00##") privateBigDecimal amount;
@ExcelColumn(name = "时间格式化") @DateFormat(value = "yyyy-MM-dd hh:mm:ss") privateDate dateTime;
@DateFormat@ExcelColumn(name = "日期格式化") privatejava.sql.Date date; @ExcelColumn(isExist = false)privateString url; }
使用
方式一. 直接导出到浏览器
ExcelExportUtil.export(Colletion <?>, Class, );
方式二. 调用getWorkbook获取工作表,自行处理workbook
ExcelExportUtil.getWorkbook( CollectionsingleSheetData, Classc)
高级使用
示例一:导出指定列(动态导出列)
List<ExportVO> list= newArrayList<>; for(int i = 0; i < 500; i++) { ExportVO exportVO = newExportVO; exportVO.setName( "name"+ i); exportVO.setValue( newBigDecimal( 123.11+ i * 0.09)); exportVO.setAmount( newBigDecimal( 6666.666+ i * 10)); exportVO.setDate( newDate( 132324343+ i * 100)); exportVO.setDateTime( newjava.util.Date); list.add(exportVO); }List<String> colList = newArrayList<>; //按照顺序仅导出add的列colList.add( "name"); colList.add( "value"); //调用获取workbook对象;也可以直接调用exportSpecifyCol方法导出到浏览器Workbook workbook = ExcelExportUtil.getWorkbookSpecifyCol( list, ExportVO.class, colList);
示例二:多sheet页签导出
List<ExportVO> list= newArrayList<>; List<Export2VO> list2 = newArrayList<>; for( inti = 0; i < 500; i++) { ExportVO exportVO = newExportVO; exportVO.setName( "name"+ i); exportVO.setValue( newBigDecimal( 123.11+ i * 0.09)); exportVO.setAmount( newBigDecimal( 6666.666+ i * 10)); exportVO.setDate( newDate( 132324343+ i * 100)); exportVO.setDateTime( newjava.util.Date); list.add(exportVO); Export2VO export2VO = newExport2VO; export2VO.setName( "name"+ i); export2VO.setValue( "value"+ i); export2VO.setAmount( newBigDecimal( 6666.666+ i * 10)); export2VO.setDate( newDate( 132324343+ i * 100)); export2VO.setDateTime( newjava.util.Date); list2.add(export2VO);}Map<Class<?>, Collection<?>> map= newHashMap<>; map.put(ExportVO.class, list); map.put(Export2VO.class, list2); //调用获取workbook对象;也可以直接调用exportByMultiSheet方法导出到浏览器Workbook workbook = ExcelExportUtil.getWorkbookByMultiSheet( map);
代码已经开源初始化错误 ,地址:
Alan_0310
爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。