alanpoi import有何优势 怎么使用alanpoi实现导入

描述

 

	

		

		

功能介绍

IMPORT

  • ExcelHandle 核心处理器

  • ExcelWorkbookManage excel所有工作表管理

  • ExcelInitConfig 配置文件初始化

  • AbstractFileParser 文件转换类

alanpoi import有何优势?

  • valid: 方法参数返回excel所有数据,用户可进行自我校验

  • error: 导入错误会回调

  • end: 方法参数返回校验成功的数据,valid校验失败的数据不会返回,用户可以自己操作持久化或者其他业务

  • 用户不需要额外引入poi等繁琐的jar

  • 毫秒级解析大文件,支持一键解析多sheet页签,不需要自己按照一定的格式循环匹配解析所有数据

  • 不管你的系统多么复杂,有多少个导入,alanpoi全部支持,而且准确返回你需要的对象,减轻开发者工作量

  • 目前外界业务越来越复杂,对各个功能要求也越来越严格,当然导入也不例外,alanpoi支持错误一键回写到excel,对应到每一行

  • alanpoi灵活可扩展,提供了ExcelConsumeInterface接口,可继承它,实现valid、error、end三个方法编写自己的业务

怎么使用alanpoi实现导入

项目中使用:


					

<dependency>     <groupId>com.alanpoigroupId>     <artifactId>alanpoi-analysisartifactId>     <version>1.3.0version> dependency>

简单一句话:一配置一继承一调用

一配置

在项目resources目录中新建excel-config.xml文件,cosume中配置自己的消费类路径,继承ExcelConsumeInterface接口,sheet中的vo是把当前sheet序列化的对象路径,column中当然就是配置vo中的属性了。

其中name可选字段,填了就是按照这个匹配excel列名,不填就是按照offset顺序;导入包含多个sheet就配置多个


					

<exg name="excelId" version="1.0" file-type="excel">   <excel id="ACCOUNT" consume="com.xxx.FinAccountImportHandler">      <sheet index="0" row-start="1" column-start="0"             vo="com.xxx.vo.FinAccountImportVO">          <column name="公司/供应商编号" offset="1">companyCodecolumn>          <column name="公司/供应商名称" offset="2">companyNamecolumn>          <column name="银行账号" offset="3">bankAccountcolumn>          <column name="开户银行" offset="4">bankNamecolumn>      sheet>  excel> exg>

一继承

consume类继承ExcelConsumeInterface接口,实现方法


					

/**  * when error will 调用  *  * @param excelError  */ void error(ExcelError excelError); /**  * custom valid data  *  * @param workbookId  * @param sheetDataList  */ void validData(String workbookId, List sheetDataList, Map excelParam); /**  * @param sheetDataList return success data  */ void end(List sheetDataList, Map 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) @Data public class ExportVO {     @ExcelColumn(name = "名称", width = 32, link = "${url}")     private String name;     @ExcelColumn(name = "值")     private String value;     @ExcelColumn(name = "金额")     @NumFormat(value = "0000.00##")     private BigDecimal amount;     @ExcelColumn(name = "时间格式化")     @DateFormat(value = "yyyy-MM-dd hhss")     private Date dateTime;     @DateFormat     @ExcelColumn(name = "日期格式化")     private java.sql.Date date;          @ExcelColumn(isExist = false)     private String url; }

使用

方式一. 直接导出到浏览器


					

ExcelExportUtil.export(Colletion,Class,HttpServletRequest,HttpServletResponse,fileName);

方式二. 调用getWorkbook获取工作表,自行处理workbook


					

ExcelExportUtil.getWorkbook(Collection singleSheetData, Class c)

高级使用

示例一:导出指定列(动态导出列)


					

List list = new ArrayList<>(); for (int i = 0; i < 500; i++) {     ExportVO exportVO = new ExportVO();     exportVO.setName("name" + i);     exportVO.setValue(new BigDecimal(123.11 + i * 0.09));     exportVO.setAmount(new BigDecimal(6666.666 + i * 10));     exportVO.setDate(new Date(132324343 + i * 100));     exportVO.setDateTime(new java.util.Date());     list.add(exportVO); } List colList = new ArrayList<>(); //按照顺序仅导出add的列 colList.add("name"); colList.add("value"); //调用获取workbook对象;也可以直接调用exportSpecifyCol方法导出到浏览器 Workbook workbook = ExcelExportUtil.getWorkbookSpecifyCol(list, ExportVO.classcolList);

示例二:多sheet页签导出


					

List list = new ArrayList<>(); List list2 = new ArrayList<>(); for (int i = 0; i < 500; i++) {     ExportVO exportVO = new ExportVO();     exportVO.setName("name" + i);     exportVO.setValue(new BigDecimal(123.11 + i * 0.09));     exportVO.setAmount(new BigDecimal(6666.666 + i * 10));     exportVO.setDate(new Date(132324343 + i * 100));     exportVO.setDateTime(new java.util.Date());     list.add(exportVO);     Export2VO export2VO = new Export2VO();     export2VO.setName("name" + i);     export2VO.setValue("value" + i);     export2VO.setAmount(new BigDecimal(6666.666 + i * 10));     export2VO.setDate(new Date(132324343 + i * 100));     export2VO.setDateTime(new java.util.Date());     list2.add(export2VO); } Map, Collection> map = new HashMap<>(); map.put(ExportVO.classlist); map.put(Export2VO.classlist2); //调用获取workbook对象;也可以直接调用exportByMultiSheet方法导出到浏览器 Workbook workbook = ExcelExportUtil.getWorkbookByMultiSheet(map);

代码已经开源,地址:

https://github.com/alan-et/alanpoi/tree/develop/alanpoi-analysis

 

原文标题:几行代码就能实现复杂的 Excel 导入导出,这个工具类真心强大!

文章出处:【微信公众号:Android编程精选】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分