当前位置: 首页 > 后端技术 > Java

几行代码就可以实现复杂的Excel导入导出,这个工具类真的很强大!

时间:2023-04-01 22:35:36 Java

来源:blog.csdn.net/weixin_43225813/article/details/108995011功能介绍IMPORTExcelHandle核心处理器ExcelWorkbookManageexcel所有工作表管理ExcelInitConfig配置文件初始化AbstractFileParser文件转换类alanpoiimport有什么优势?用户无需额外引入poi等繁琐jar即可实现毫秒级大文件解析,支持一键解析多个sheet标签。他们不需要根据某种格式解析所有数据。无论你的系统有多复杂,导入有多少,alanpoi都支持,并准确返回你需要的对象,减少开发者的工作量。目前,对外业务越来越复杂,对各种功能的要求也越来越严格。当然,进口也不例外。Alanpoi支持错误一键回写excel。对应每一行,alanpoi灵活可扩展,提供了ExcelConsumeInterface接口,可以继承实现valid、error、end三个方法来写自己的业务。valid:方法参数返回excel中的所有数据,用户可以进行自检用户可以自行操作持久化或其他业务。alanpoi-analysis1.3.0简单一句话:一份配置一份继承一份调用一份配置在项目资源目录下新建一个excel-config.xml文件,在cosume中配置自己的消费类路径,继承ExcelConsumeInterface接口,sheet中的vo是序列化当前sheet的对象路径,当然还要在column中的vo中配置属性。其中,name为可选字段。如果填写,则匹配excel列名,如果不填写,则按偏移顺序;如果导入多张,配置多个companyCodecompanyNamebankAccountbankName继承consume类继承ExcelConsumeInterface接口并实现方法/***什么时候调用错误**@paramexcelError*/voiderror(ExcelErrorexcelError);/***自定义有效数据**@paramworkbookId*@paramsheetDataList*/voidvalidData(StringworkbookId,ListsheetDataList,MapexcelParam);/***@paramsheetDataList返回成功数据*/voidend(ListsheetDataList,MapexcelParam);一旦用户调用了ExcelExportUtil类的customImportData,参数excelId就是excel-conifg.xml中配置的idExport的描述,一行代码就可以实现,永远不需要第二行。如果一行不起作用,请添加另一行!模式注解模式导出:ExcelSheet注解:用于导入类,可以指定sheet名称,列标题的颜色、字体、高度、宽度ExcelColum注解:用于导入类的属性,可以指定类的名称列标题,单元格StyleDateFormat注解:用在导入类的属性上,可以按照指定的格式输出到excel,默认为"yyyy/MM/dd"NumFormat注解:用在导入类的属性上,可以按照指定的格式输出到excel,默认为"00.00"例:@ExcelSheet(name="Test",backColor=AlanColors.GREEN,font="Arial",fontSize=25)@DatapublicclassExportVO{@ExcelColumn(name="Name",width=32,link="${url}")privateStringname;@ExcelColumn(名称="值")p私有字符串值;@ExcelColumn(name="amount")@NumFormat(value="0000.00##")privateBigDecimal金额;@ExcelColumn(name="时间格式")@DateFormat(value="yyyy-MM-ddhh:mm:ss")privateDatedateTime;@DateFormat@ExcelColumn(name="DateFormatting")privatejava.sql.Date日期;@ExcelColumn(isExist=false)privateStringurl;}用法1.直接导出到浏览器ExcelExportUtil.export(Collection,Class,HttpServletRequest,HttpServletResponse,fileName);方法二、调用getWorkbook获取工作表,自行处理工作簿ExcelExportUtil.getWorkbook(CollectionsingleSheetData,Classc)高级使用示例一:导出指定列(动态导出列)Listlist=newArrayList<>();for(inti=0;i<500;i++){ExportVOexportVO=newExportVO();exportVO.setName("姓名"+i);exportVO.setValue(newBigDecimal(123.11+i*0.09));exportVO.setAmount(newBigDecimal(6666.666+i*10));导出VO.setDate(新日期(132324343+i*100));exportVO.setDateTime(newjava.util.Date());list.add(exportVO);}ListcolList=newArrayList<>();//按照顺序只导出add的列colList.add("name");colList.add("value");//调用获取工作簿对象;也可以直接调用exportSpecifyCol方法导出到浏览器Workbookworkbook=ExcelExportUtil.getWorkbookSpecifyCol(list,ExportVO.class,colList);示例2:多页选项卡导出Listlist=newArrayList<>();Listlist2=newArrayList<>();for(inti=0;i<500;i++){ExportVOexportVO=新的ExportVO();exportVO.setName("姓名"+i);exportVO.setValue(newBigDecimal(123.11+i*0.09));exportVO.setAmount(newBigDecimal(6666.666+i*10));exportVO.setDate(新日期(132324343+i*100));exportVO.setDateTime(newjava.util.Date());list.add(exportVO);Export2VOexport2VO=newExport2VO();出口2VO。setName("名字"+i);export2VO.setValue("值e"+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);近期热点文章推荐:1.1,000+Java面试题及答案(2022最新version)2.Mad!Java协程来了3.SpringBoot2.x教程,太全面了!4.别写满屏的爆款类,试试装饰器模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!

猜你喜欢