0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

Android编程精选 来源:CSDN技术社区 作者:Alan_0310 2022-06-29 16:19 次阅读

	

		

		

功能介绍

IMPORT

  • ExcelHandle核心处理器

  • ExcelWorkbookManageexcel所有工作表管理

  • 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就配置多个


					

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

一继承

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


					

/** *whenerrorwill调用 * *@paramexcelError */ voiderror(ExcelErrorexcelError); /** *customvaliddata * *@paramworkbookId *@paramsheetDataList */ voidvalidData(StringworkbookId,ListsheetDataList,MapexcelParam); /** *@paramsheetDataListreturnsuccessdata */ voidend(ListsheetDataList,MapexcelParam);

一调用

用户调用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 publicclassExportVO{ @ExcelColumn(name="名称",width=32,link="${url}") privateStringname; @ExcelColumn(name="值") privateStringvalue; @ExcelColumn(name="金额") @NumFormat(value="0000.00##") privateBigDecimalamount; @ExcelColumn(name="时间格式化") @DateFormat(value="yyyy-MM-ddhhss") privateDatedateTime; @DateFormat @ExcelColumn(name="日期格式化") privatejava.sql.Datedate; @ExcelColumn(isExist=false) privateStringurl; }

使用

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


					

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

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


					

ExcelExportUtil.getWorkbook(CollectionsingleSheetData,Classc)

高级使用

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


					

Listlist=newArrayList<>(); for(inti=0;i< 500;i++){ ExportVOexportVO=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); } ListcolList=newArrayList<>(); //按照顺序仅导出add的列 colList.add("name"); colList.add("value"); //调用获取workbook对象;也可以直接调用exportSpecifyCol方法导出到浏览器 Workbookworkbook=ExcelExportUtil.getWorkbookSpecifyCol(list,ExportVO.class,colList);

示例二:多sheet页签导出


					

Listlist=newArrayList<>(); Listlist2=newArrayList<>(); for(inti=0;i< 500;i++){ ExportVOexportVO=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); Export2VOexport2VO=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,Collection>map=newHashMap<>(); map.put(ExportVO.class,list); map.put(Export2VO.class,list2); //调用获取workbook对象;也可以直接调用exportByMultiSheet方法导出到浏览器 Workbookworkbook=ExcelExportUtil.getWorkbookByMultiSheet(map);

代码已经开源,地址:

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

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

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

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

    关注

    68

    文章

    19155

    浏览量

    229059
  • Excel
    +关注

    关注

    4

    文章

    218

    浏览量

    55445
  • import
    +关注

    关注

    0

    文章

    15

    浏览量

    1949

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

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

收藏 人收藏

    评论

    相关推荐

    ARM-based相比ARM cortex优势

    你看好ARM-based架构吗 相比ARM cortex优势 ARM其他还有什么架构啊,感觉曝光的好少。。
    发表于 04-24 06:55

    微内核什么时候发布?微内核优势

    想了解下微内核什么时候发布的?微内核优势
    发表于 10-10 10:09

    网表仿真与RTL仿真相比优势

    网表仿真与RTL仿真相比优势?“线与”逻辑是什么?
    发表于 11-04 06:23

    Keil_import相关资料

    Keil_import相关资料,需要的下来看看
    发表于 08-16 18:54 5次下载

    MCU中导入DSP/FPU作用?资料下载

    电子发烧友网为你提供MCU中导入DSP/FPU作用?资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-23 08:52 5次下载
    MCU中<b class='flag-5'>导入</b>DSP/FPU<b class='flag-5'>有</b><b class='flag-5'>何</b>作用?资料下载

    import-mailbox-to-gmail邮件导入工具

    ./oschina_soft/import-mailbox-to-gmail.zip
    发表于 05-23 11:00 2次下载
    <b class='flag-5'>import</b>-mailbox-to-gmail邮件<b class='flag-5'>导入</b>工具

    python包模块相对导入from和import介绍1

    无包文件**init**.py下,python通过import module导入模块时,先搜索程序运行主目录。 程序运行主目录为运行的py文件所在目录,而不是执行python.exe时所在目录。 模块搜索路径sys.path参考:python模块基础
    的头像 发表于 02-21 14:15 1008次阅读

    简述python包模块import和from及all

    python指定导入目录路径,称为包导入。 通过import和from导入包模块。 通过**all**指定导入的模块和
    的头像 发表于 02-21 14:20 1213次阅读

    浅析python模块创建和from及import使用

    python模块通过用python程序编写的.py文件即可创建,通过from及import语句导入模块来使用。
    的头像 发表于 02-21 14:44 797次阅读

    import模块的导入方法

    : 一般通过 import 语句实现模块的导入和使用, import 本质上是使用了内置函数 __import__() 当我们 通过
    的头像 发表于 09-11 17:31 1175次阅读

    rom…import导入代码介绍

    rom…import导入 基本语法格式如下: from 模块名 import 成员1,成员2,… 如果希望导入一个模块中的所有成员,则可以采用如下方式: from 模块名
    的头像 发表于 09-11 17:35 910次阅读

    如何实现__import__()动态导入

    import () 动态导入 import 语句本质上就是调用内置函数 import (),我们可以通过它实现动态
    的头像 发表于 09-11 17:38 1081次阅读

    Python import Hook 实现远程导入模块

    的进阶技能,会深入地探讨并以真实案例讲解 Python import Hook 的知识点。 当然为了使文章更系统、全面,前面会有小篇幅讲解基础知识点,但请你耐心的往后读下去,因为后面才是本篇文章的精华所在,希望你不要错过。 1.
    的头像 发表于 11-02 11:45 606次阅读
    Python <b class='flag-5'>import</b> Hook <b class='flag-5'>实现</b>远程<b class='flag-5'>导入</b>模块

    如何用import导入一个包

    在Python中,import语句用于导入代码所需的模块或包。模块是Python代码的集合,而包是包含模块和其他包的文件夹。在本文中,我将详细说明如何使用import语句导入包。
    的头像 发表于 11-22 14:59 1097次阅读

    java导入import怎么写

    在Java中,使用import语句来引入其他包中的类,以便在当前文件中使用这些类。import语句可以帮助我们有效地组织和管理代码,并且使程序更易读和易维护。下面是关于Java中import语句
    的头像 发表于 11-22 15:00 934次阅读