0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

alanpoi import有何優(yōu)勢(shì) 怎么使用alanpoi實(shí)現(xiàn)導(dǎo)入

Android編程精選 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 作者:Alan_0310 ? 2022-06-29 16:19 ? 次閱讀

	

		

		

功能介紹

IMPORT

  • ExcelHandle核心處理器

  • ExcelWorkbookManageexcel所有工作表管理

  • ExcelInitConfig配置文件初始化

  • AbstractFileParser文件轉(zhuǎn)換類(lèi)

alanpoi import有何優(yōu)勢(shì)?

  • valid:方法參數(shù)返回excel所有數(shù)據(jù),用戶可進(jìn)行自我校驗(yàn)

  • error:導(dǎo)入錯(cuò)誤會(huì)回調(diào)

  • end:方法參數(shù)返回校驗(yàn)成功的數(shù)據(jù),valid校驗(yàn)失敗的數(shù)據(jù)不會(huì)返回,用戶可以自己操作持久化或者其他業(yè)務(wù)

  • 用戶不需要額外引入poi等繁瑣的jar

  • 毫秒級(jí)解析大文件,支持一鍵解析多sheet頁(yè)簽,不需要自己按照一定的格式循環(huán)匹配解析所有數(shù)據(jù)

  • 不管你的系統(tǒng)多么復(fù)雜,有多少個(gè)導(dǎo)入,alanpoi全部支持,而且準(zhǔn)確返回你需要的對(duì)象,減輕開(kāi)發(fā)者工作量

  • 目前外界業(yè)務(wù)越來(lái)越復(fù)雜,對(duì)各個(gè)功能要求也越來(lái)越嚴(yán)格,當(dāng)然導(dǎo)入也不例外,alanpoi支持錯(cuò)誤一鍵回寫(xiě)到excel,對(duì)應(yīng)到每一行

  • alanpoi靈活可擴(kuò)展,提供了ExcelConsumeInterface接口,可繼承它,實(shí)現(xiàn)valid、error、end三個(gè)方法編寫(xiě)自己的業(yè)務(wù)

怎么使用alanpoi實(shí)現(xiàn)導(dǎo)入

項(xiàng)目中使用:


					

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

簡(jiǎn)單一句話:一配置一繼承一調(diào)用

一配置

在項(xiàng)目resources目錄中新建excel-config.xml文件,cosume中配置自己的消費(fèi)類(lèi)路徑,繼承ExcelConsumeInterface接口,sheet中的vo是把當(dāng)前sheet序列化的對(duì)象路徑,column中當(dāng)然就是配置vo中的屬性了。

其中name可選字段,填了就是按照這個(gè)匹配excel列名,不填就是按照offset順序;導(dǎo)入包含多個(gè)sheet就配置多個(gè)


					

<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="公司/供應(yīng)商編號(hào)"offset="1">companyCodecolumn> <columnname="公司/供應(yīng)商名稱(chēng)"offset="2">companyNamecolumn> <columnname="銀行賬號(hào)"offset="3">bankAccountcolumn> <columnname="開(kāi)戶銀行"offset="4">bankNamecolumn> sheet> excel> exg>

一繼承

consume類(lèi)繼承ExcelConsumeInterface接口,實(shí)現(xiàn)方法


					

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

一調(diào)用

用戶調(diào)用ExcelExportUtil類(lèi)的customImportData即可,參數(shù)excelId就是excel-conifg.xml中配置的id

Export

描敘

能夠用一行代碼實(shí)現(xiàn)絕不用第二行,如果一行不行,那就再加一行!

模式

注解模式導(dǎo)出:

  • ExcelSheet注解:用于導(dǎo)入類(lèi)上,可制定sheet名,列頭的顏色、字體、高度、寬度

  • ExcelColum注解:用于導(dǎo)入類(lèi)的屬性上,可指定列頭的名稱(chēng),單元格的樣式

  • DateFormat注解:用于導(dǎo)入類(lèi)的屬性上, 可以按照指定格式輸出到excel,默認(rèn)"yyyy/MM/dd"

  • NumFormat注解:用于導(dǎo)入類(lèi)的屬性上,可以按照指定格式輸出到excel,默認(rèn)"00.00"

樣例:


					

@ExcelSheet(name="測(cè)試",backColor=AlanColors.GREEN,font="宋體",fontSize=25) @Data publicclassExportVO{ @ExcelColumn(name="名稱(chēng)",width=32,link="${url}") privateStringname; @ExcelColumn(name="值") privateStringvalue; @ExcelColumn(name="金額") @NumFormat(value="0000.00##") privateBigDecimalamount; @ExcelColumn(name="時(shí)間格式化") @DateFormat(value="yyyy-MM-ddhhss") privateDatedateTime; @DateFormat @ExcelColumn(name="日期格式化") privatejava.sql.Datedate; @ExcelColumn(isExist=false) privateStringurl; }

使用

方式一. 直接導(dǎo)出到瀏覽器


					

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

方式二. 調(diào)用getWorkbook獲取工作表,自行處理workbook


					

ExcelExportUtil.getWorkbook(CollectionsingleSheetData,Classc)

高級(jí)使用

示例一:導(dǎo)出指定列(動(dòng)態(tài)導(dǎo)出列)


					

Listlist=newArrayList<>(); for(inti=0;i500;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<>(); //按照順序僅導(dǎo)出add的列 colList.add("name"); colList.add("value"); //調(diào)用獲取workbook對(duì)象;也可以直接調(diào)用exportSpecifyCol方法導(dǎo)出到瀏覽器 Workbookworkbook=ExcelExportUtil.getWorkbookSpecifyCol(list,ExportVO.class,colList);

示例二:多sheet頁(yè)簽導(dǎo)出


					

Listlist=newArrayList<>(); Listlist2=newArrayList<>(); for(inti=0;i500;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); //調(diào)用獲取workbook對(duì)象;也可以直接調(diào)用exportByMultiSheet方法導(dǎo)出到瀏覽器 Workbookworkbook=ExcelExportUtil.getWorkbookByMultiSheet(map);

代碼已經(jīng)開(kāi)源,地址:

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

原文標(biāo)題:幾行代碼就能實(shí)現(xiàn)復(fù)雜的 Excel 導(dǎo)入導(dǎo)出,這個(gè)工具類(lèi)真心強(qiáng)大!

文章出處:【微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19118

    瀏覽量

    228869
  • Excel
    +關(guān)注

    關(guān)注

    4

    文章

    217

    瀏覽量

    55425
  • import
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    1943

原文標(biāo)題:幾行代碼就能實(shí)現(xiàn)復(fù)雜的 Excel 導(dǎo)入導(dǎo)出,這個(gè)工具類(lèi)真心強(qiáng)大!

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ARM-based相比ARM cortex優(yōu)勢(shì)?

    你看好ARM-based架構(gòu)嗎 相比ARM cortex優(yōu)勢(shì) ARM其他還有什么架構(gòu)啊,感覺(jué)曝光的好少。。
    發(fā)表于 04-24 06:55

    微內(nèi)核什么時(shí)候發(fā)布?微內(nèi)核優(yōu)勢(shì)?

    想了解下微內(nèi)核什么時(shí)候發(fā)布的?微內(nèi)核優(yōu)勢(shì)?
    發(fā)表于 10-10 10:09

    網(wǎng)表仿真與RTL仿真相比優(yōu)勢(shì)

    網(wǎng)表仿真與RTL仿真相比優(yōu)勢(shì)?“線與”邏輯是什么?
    發(fā)表于 11-04 06:23

    Keil_import相關(guān)資料

    Keil_import相關(guān)資料,需要的下來(lái)看看
    發(fā)表于 08-16 18:54 ?5次下載

    MCU中導(dǎo)入DSP/FPU作用?資料下載

    電子發(fā)燒友網(wǎng)為你提供MCU中導(dǎo)入DSP/FPU作用?資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-23 08:52 ?5次下載
    MCU中<b class='flag-5'>導(dǎo)入</b>DSP/FPU<b class='flag-5'>有</b><b class='flag-5'>何</b>作用?資料下載

    import-mailbox-to-gmail郵件導(dǎo)入工具

    ./oschina_soft/import-mailbox-to-gmail.zip
    發(fā)表于 05-23 11:00 ?2次下載
    <b class='flag-5'>import</b>-mailbox-to-gmail郵件<b class='flag-5'>導(dǎo)入</b>工具

    python包模塊相對(duì)導(dǎo)入from和import介紹1

    無(wú)包文件**init**.py下,python通過(guò)import module導(dǎo)入模塊時(shí),先搜索程序運(yùn)行主目錄。 程序運(yùn)行主目錄為運(yùn)行的py文件所在目錄,而不是執(zhí)行python.exe時(shí)所在目錄。 模塊搜索路徑sys.path參考:python模塊基礎(chǔ)
    的頭像 發(fā)表于 02-21 14:15 ?1003次閱讀

    簡(jiǎn)述python包模塊import和from及all

    python指定導(dǎo)入目錄路徑,稱(chēng)為包導(dǎo)入。 通過(guò)import和from導(dǎo)入包模塊。 通過(guò)**all**指定導(dǎo)入的模塊和
    的頭像 發(fā)表于 02-21 14:20 ?1204次閱讀

    淺析python模塊創(chuàng)建和from及import使用

    python模塊通過(guò)用python程序編寫(xiě)的.py文件即可創(chuàng)建,通過(guò)from及import語(yǔ)句導(dǎo)入模塊來(lái)使用。
    的頭像 發(fā)表于 02-21 14:44 ?788次閱讀

    import模塊的導(dǎo)入方法

    : 一般通過(guò) import 語(yǔ)句實(shí)現(xiàn)模塊的導(dǎo)入和使用, import 本質(zhì)上是使用了內(nèi)置函數(shù) __import__() 當(dāng)我們 通過(guò)
    的頭像 發(fā)表于 09-11 17:31 ?1164次閱讀

    rom…import導(dǎo)入代碼介紹

    rom…import導(dǎo)入 基本語(yǔ)法格式如下: from 模塊名 import 成員1,成員2,… 如果希望導(dǎo)入一個(gè)模塊中的所有成員,則可以采用如下方式: from 模塊名
    的頭像 發(fā)表于 09-11 17:35 ?898次閱讀

    如何實(shí)現(xiàn)__import__()動(dòng)態(tài)導(dǎo)入

    import () 動(dòng)態(tài)導(dǎo)入 import 語(yǔ)句本質(zhì)上就是調(diào)用內(nèi)置函數(shù) import (),我們可以通過(guò)它實(shí)現(xiàn)動(dòng)態(tài)
    的頭像 發(fā)表于 09-11 17:38 ?1065次閱讀

    Python import Hook 實(shí)現(xiàn)遠(yuǎn)程導(dǎo)入模塊

    的進(jìn)階技能,會(huì)深入地探討并以真實(shí)案例講解 Python import Hook 的知識(shí)點(diǎn)。 當(dāng)然為了使文章更系統(tǒng)、全面,前面會(huì)有小篇幅講解基礎(chǔ)知識(shí)點(diǎn),但請(qǐng)你耐心的往后讀下去,因?yàn)楹竺娌攀潜酒恼碌木A所在,希望你不要錯(cuò)過(guò)。 1. 導(dǎo)
    的頭像 發(fā)表于 11-02 11:45 ?598次閱讀
    Python <b class='flag-5'>import</b> Hook <b class='flag-5'>實(shí)現(xiàn)</b>遠(yuǎn)程<b class='flag-5'>導(dǎo)入</b>模塊

    如何用import導(dǎo)入一個(gè)包

    在Python中,import語(yǔ)句用于導(dǎo)入代碼所需的模塊或包。模塊是Python代碼的集合,而包是包含模塊和其他包的文件夾。在本文中,我將詳細(xì)說(shuō)明如何使用import語(yǔ)句導(dǎo)入包。
    的頭像 發(fā)表于 11-22 14:59 ?1077次閱讀

    java導(dǎo)入import怎么寫(xiě)

    在Java中,使用import語(yǔ)句來(lái)引入其他包中的類(lèi),以便在當(dāng)前文件中使用這些類(lèi)。import語(yǔ)句可以幫助我們有效地組織和管理代碼,并且使程序更易讀和易維護(hù)。下面是關(guān)于Java中import語(yǔ)句
    的頭像 發(fā)表于 11-22 15:00 ?920次閱讀