Java中excel與對象的互相轉換的通用工具類編寫與使用(基於apache-poi-ooxml)


通用excel與對象相互轉換的工具類

前言:最近開發需要一個Excel批量導入或者導出的功能,之前用過poi-ooxml開發過一個導入的工具類,正好蹭着這次機會,把工具類的功能進行完善。

使用說明:

(1)對象換成Excel,ExcelUtil#pojo2Excel();  最后生成一個輸出流,可以用作文件生成或web中的上傳下載

方法參數:

* @param pojoList      對象數組

* @param out             輸出流

* @param alias            (可選)默認生成表的列名為類的屬性名,可以通過此屬性指定,格式要求LinkedHashMap<”屬性名”,”列名”>

* @param headLine     (可選)默認為類名,可通過此屬性指定表標題

使用示例:

@Test
    /**
     * 對象轉換成excel文件測試
     * @throws Exception
     */
    public void pojo2Excel1() throws Exception {
        //將生成的excel轉換成文件,還可以用作文件下載
        File file = new File("C:\\Users\\chenkeyu\\Work\\1.xls");
        FileOutputStream fos = new FileOutputStream(file);
        
        //對象集合
        List<User> pojoList=new ArrayList<>();
        for(int i=0;i<5;i++) {
            User user = new User();
            user.setName("老李");
            user.setAge(50);
            pojoList.add(user);
        }
        //設置屬性別名(列名)
        LinkedHashMap<String, String> alias = new LinkedHashMap<>();
        alias.put("name", "姓名");
        alias.put("age","年齡");
        //標題
        String headLine="用戶表";
        
        ExcelUtil.pojo2Excel(pojoList, fos, alias, headLine);
    }

 

(2)Excel轉換成指定類型的對象數組  List<T>  ExcelUtil#pojo2Excel();

參數解析:

* @param Class claz     要轉換的類型

* @param LinkedHashMap alias     (可選)列所對應的屬性名,默認按屬性名解析,格式要求:LinkedHashMap<"列名","類屬性名">

測試:

@Test 
    /**
     * excel文件轉換成對象測試
     * @throws Exception
     */
    public void excel2Pojo() throws Exception {
        //指定輸入文件
        FileInputStream fis = new FileInputStream("C:\\Users\\chenkeyu\\Work\\1.xls");
        //指定每列對應的類屬性
        LinkedHashMap<String, String> alias = new LinkedHashMap<>();
        alias.put("姓名","name");
        alias.put("年齡","age");
        //轉換成指定類型的對象數組
        List<User> pojoList = ExcelUtil.excel2Pojo(fis, User.class, alias);
        logger.info(pojoList.toString());
    }

代碼解析:

Maven依賴:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.9.3</version>
</dependency>

 

本工具類是基於poi-ooxml的,要介紹poi就要先介紹一下Excel的結構:

       眾所周知,一個最基本的Excel文件就是一個工作簿,一個工作簿包括多個表,一個表又有多行多列,從而划分成多個單元格。

 

       知道了上面的基本知識,poi-ooxml就很好學了,它也是根據這種結構來划分類的。

       HSSFWorkbook代表一個工作簿

       HSSFSheet代表一個表

       HSSFRow代表一行

       HSSFCell代表一個單元格

本工具類就是基於上面的知識點再加上Apache-Commons實現的。

源碼地址:https://github.com/cky-thinker/excelUtilDemo

以上代碼如有問題,歡迎大佬們下方留言

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM