引入使用

  1. <dependency>
  2. <groupId>com.alanpoi</groupId>
  3. <artifactId>alanpoi-analysis</artifactId>
  4. <version>1.3.0</version>
  5. </dependency>

功能实体

简介:

IMPORT

  • ExcelHandle 核心处理器
  • ExcelWorkbookManage excel所有工作表管理
  • ExcelInitConfig 配置文件初始化
  • AbstractFileParser 文件转换类

    优势

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

  • 毫秒级解析大文件,支持一键解析多sheet页签,不需要自己按照一定的格式循环匹配解析所有数据
  • 不管你的系统多么复杂,有多少个导入,alanpoi全部支持,而且准确返回你需要的对象,减轻开发者工作量
  • 目前外界业务越来越复杂,对各个功能要求也越来越严格,当然导入也不例外,alanpoi支持错误一键回写到excel,对应到每一行
  • alanpoi灵活可扩展,提供了ExcelConsumeInterface接口,可继承它,实现valid、error、end三个方法编写自己的业务
    • valid: 方法参数返回excel所有数据,用户可进行自我校验
    • error: 导入错误会回调
    • end: 方法参数返回校验成功的数据,valid校验失败的数据不会返回,用户可以自己操作持久化或者其他业务
  • 配置一继承一调用

配置

在项目resources目录中新建excel-config.xml文件,
cosume中配置自己的消费类路径,继承ExcelConsumeInterface接口,sheet中的vo是把当前sheet序列化的对象路径,column中当然就是配置vo中的属性了。
其中name可选字段,填了就是按照这个匹配excel列名,不填就是按照offset顺序;导入包含多个sheet就配置多个

  1. <?xml version = "1.0" encoding = "GB2312"?>
  2. <exg name="excelId" version="1.0" file-type="excel">
  3. <excel id="ACCOUNT" consume="com.xxx.FinAccountImportHandler">
  4. <sheet index="0" row-start="1" column-start="0"
  5. vo="com.xxx.vo.FinAccountImportVO">
  6. <column name="公司/供应商编号" offset="1">companyCode</column>
  7. <column name="公司/供应商名称" offset="2">companyName</column>
  8. <column name="银行账号" offset="3">bankAccount</column>
  9. <column name="开户银行" offset="4">bankName</column>
  10. </sheet>
  11. </excel>
  12. </exg>

继承

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

调用
用户调用ExcelExportUtil类的customImportData即可,参数excelId就是excel-conifg.xml中配置的id

Export

描叙

能够用一行代码实现绝不用第二行,如果一行不行,那就再加一行!

  1. ExcelSheet注解: 用于导入类上,可制定sheet名,列头的颜色、字体、高度、宽度
  2. ExcelColum注解: 用于导入类的属性上,可指定列头的名称,单元格的样式
  3. DateFormat注解: 用于导入类的属性上, 可以按照指定格式输出到excel,默认"yyyy/MM/dd"
  4. NumFormat注解: 用于导入类的属性上,可以按照指定格式输出到excel,默认"00.00"

导出到浏览器

  1. ExcelExportUtil.export(Colletion<?>,Class,HttpServletRequest,HttpServletResponse,fileName);

调用getWorkbook获取工作表,自行处理workbook

  1. ExcelExportUtil.getWorkbook(Collection<?> singleSheetData, Class<?> c)

https://mp.weixin.qq.com/s/D5kmVkkzaFeguHh-u3Gj5g