EasyPoi的導(dǎo)入和導(dǎo)出功能
EasyPoi是一款開(kāi)源的軟件,用于開(kāi)發(fā)EXCEL表格的導(dǎo)入和導(dǎo)出功能,簡(jiǎn)單易上手,代碼量也很少,非常適合初學(xué)者去使用。我們使用Java開(kāi)發(fā)Excel導(dǎo)入導(dǎo)出功能,以前常用的是Poi,但是需要編寫(xiě)的代碼量太多,使用EasyPoi僅需要在代碼中添加注解,便可以完成大部分普通的Excel編輯工作。
工具/材料
IntelliJ IDEA
操作方法
- 01
我們是使用Maven管理項(xiàng)目,首先我們需要添加開(kāi)發(fā)EasyPoi所依賴(lài)的jar包,如下所示。
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>3.1.0</version>
</dependency> - 02
EasyPoi 可以自適應(yīng)Excel的xls和xlsx兩種格式,我們今天主要講解使用注解進(jìn)行導(dǎo)入和導(dǎo)出的功能,我們只要修改注解就可以修改Excel的字段和格式。我們需要編寫(xiě)實(shí)體和Excel表格的對(duì)應(yīng)關(guān)系,在實(shí)體上添加注解。@Excel 注解作用到filed(列)上面,是對(duì)列的描述。@Excel注解的name屬性即為列名,format用于設(shè)置時(shí)間的格式。我們創(chuàng)建一個(gè)PersonEntity,實(shí)現(xiàn)序列化接口,并添加如下的注解,另外該類(lèi)需要getter和setter方法。
- 03
我們寫(xiě)一個(gè)測(cè)試類(lèi)去測(cè)試導(dǎo)出功能,創(chuàng)建一個(gè)測(cè)試類(lèi),并在main方法中編寫(xiě)測(cè)試代碼,我們使用easypoi工具類(lèi)ExcelExportUtil 的exportExcel方法,其中new ExportParams()是標(biāo)題和sheet的基本設(shè)置,當(dāng)然這些設(shè)置有些不是必須的,可以根據(jù)需要自行修改。具體的導(dǎo)出代碼如下圖所示。
- 04
接下來(lái)我們右鍵執(zhí)行該方法,此時(shí)會(huì)生成一個(gè)excel文件,如下圖所示,我們可以看到設(shè)置的標(biāo)題和數(shù)據(jù)已存在該excel表格中。
- 05
接下來(lái)我們編寫(xiě)導(dǎo)入的方法,將上面生成的excel表格導(dǎo)入,使用ExcelImportUtil工具類(lèi)的importExcel方法,ImportParams用于設(shè)置導(dǎo)入?yún)?shù)。
- 06
接下來(lái)我們測(cè)試導(dǎo)入功能,在執(zhí)行方法后提示創(chuàng)建對(duì)象異常,我們需要檢查異常的原因,此時(shí)發(fā)現(xiàn)我們上面創(chuàng)建的實(shí)體類(lèi)沒(méi)有無(wú)參構(gòu)造方法,因?yàn)槲覀円呀?jīng)創(chuàng)建了一個(gè)有參的構(gòu)造,就不會(huì)幫我們自動(dòng)創(chuàng)建無(wú)參構(gòu)造了,因此我們需要手動(dòng)創(chuàng)建,如下圖所示。
- 07
另外,我們?cè)诰帉?xiě)PersonEntity實(shí)體類(lèi)時(shí),步驟2的id字段上面沒(méi)有@Excel注解,所以該字段不起任何作用,若不需要的話可以刪除。
特別提示
EasyPoi注解作用的實(shí)體類(lèi)一定要有無(wú)參構(gòu)造,若實(shí)體類(lèi)中存在有參構(gòu)造,一定要手動(dòng)創(chuàng)建一個(gè)無(wú)參構(gòu)造。
詞條內(nèi)容僅供參考,如果您需要解決具體問(wèn)題
(尤其在法律、醫(yī)學(xué)等領(lǐng)域),建議您咨詢(xún)相關(guān)領(lǐng)域?qū)I(yè)人士。