easyExcel 所需的maven 依賴


easyExcel 所需的maven 依賴

  補充這些依賴不是都需要導入,我這里用到了xlsx這個表格,所以需要poi-ooxml

詳情可以看這篇博客,根據需要去導入依賴,不然很有可能沖突,讀寫不了數據

POI各Jar包的作用 - 秋心無波 - 博客園 (cnblogs.com)

  

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>2.1.6</version>
 </dependency>

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

<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.17</version> </dependency> <dependency> <groupId>org.apche.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version> </dependency>

1. 寫excel

package com.example.demo.excel;

import com.alibaba.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

public class TestEasyExcel {
    public static void main(String[] args) {

        //1.設置文件夾的地址和名稱
        String filename  = "E:\\easyExcelDocument\\write.xlsx";

        //2.調用easyExcel里的方法
        EasyExcel.write(filename,DemoData.class).sheet("學生列表").doWrite(getData());

    }


    //上面的靜態方法,不能調用非靜態方法,因此得聲明此方法為靜態方法
    private static List<DemoData> getData(){
        List<DemoData> list = new ArrayList<>();
        for (int i = 0; i < 10000; i++) {
            DemoData data = new DemoData();
            data.setSno(i);
            data.setSname("學生"+i);
            list.add(data);
        }
        return list;
    }
}

1.1 實體類

package com.example.demo.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class DemoData {
    //設置表頭名稱
    @ExcelProperty("學生編號")
    private Integer sno;

    @ExcelProperty("學生姓名")
    private String sname;

}

2. 讀操作(寫的話直接寫就行,但讀取excel得額外新建監聽器,實現相應的方法)

  2.1 實體類

package com.example.demo.excel;

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class DemoData {
    //設置表頭名稱
    @ExcelProperty(value = "學生編號",index = 0)
    private Integer sno;

    @ExcelProperty(value = "學生姓名",index = 1)
    private String sname;

}

增加index屬性

  2.2 監聽器(用於處理read 執行前后的操作)

  

package com.example.demo.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;

import java.util.Map;

public class ExcelListener extends AnalysisEventListener<DemoData> {

    //一行一行的讀取excel內容
    @Override
    public void invoke(DemoData demoData, AnalysisContext analysisContext) {
        System.out.println("****"+demoData);
        //數據太多的話控制台會自動清除
    }

    //讀取表頭內容
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表頭"+headMap);
    }

    //讀取完成之后
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }
}

 3. 測試

package com.example.demo.excel;

import com.alibaba.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

public class TestEasyExcel {
    public static void main(String[] args) {


        //***********寫操作
//        //1.設置文件夾的地址和名稱
//        String filename  = "E:\\easyExcelDocument\\write.xlsx";
//
//        //2.調用easyExcel里的方法
//        EasyExcel.write(filename,DemoData.class).sheet("學生列表").doWrite(getData());


        //**********讀操作
        String filename  = "E:\\easyExcelDocument\\write.xlsx";
        EasyExcel.read(filename,DemoData.class,new ExcelListener()).sheet("學生列表").doRead();
//        System.out.println(EasyExcel.read(filename));
    }


    //上面的靜態方法,不能調用非靜態方法,因此得聲明此方法為靜態方法
    private static List<DemoData> getData(){
        List<DemoData> list = new ArrayList<>();
        for (int i = 0; i < 10000; i++) {
            DemoData data = new DemoData();
            data.setSno(i);
            data.setSname("學生"+i);
            list.add(data);
        }
        return list;
    }
}

 


免責聲明!

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



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