java如何實現讀寫excel文件---EasyExcel

java零基礎自學網站,點擊瞭解:https://how2j.cn

目錄

一、創建項目,實現EasyExcel對Excel寫操作

1、創建一個普通的maven項目

2、pom中引入xml相關依賴

         3、創建實體類

4 、實現寫操作

二、實現EasyExcel對Excel讀操作

1、創建實體類

2、創建讀取操作的監聽器

         3、調用實現最終的讀取


一、創建項目,實現EasyExcel對Excel寫操作

1、創建一個普通的maven項目

項目名:excel-easydemo

2、pom中引入xml相關依賴

 

<dependencies>

    <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->

    <dependency>

        <groupId>com.alibaba</groupId>

        <artifactId>easyexcel</artifactId>

        <version>2.1.1</version>

    </dependency>

</dependencies>

3、創建實體類

設置表頭和添加的數據字段

 


import com.alibaba.excel.annotation.ExcelProperty;


//設置表頭和添加的數據字段

public class DemoData {

    //設置表頭名稱

    @ExcelProperty("學生編號")

    private int sno;

    //設置表頭名稱

    @ExcelProperty("學生姓名")

    private String sname;


    public int getSno() {

        return sno;


    }

    public void setSno(int sno) {

        this.sno = sno;

    }

    public String getSname() {

        return sname;

    }


    public void setSname(String sname) {

        this.sname = sname;

    }

    @Override

    public String toString() {

        return "DemoData{" +

                "sno=" + sno +

                ", sname='" + sname + '\'' +

                '}';

    }

}

 

4 、實現寫操作

(1)創建方法循環設置要添加到Excel的數據

 



//循環設置要添加的數據,最終封裝到list集合中

private static List<DemoData> data() {

    List<DemoData> list = new ArrayList<DemoData>();
    for (int i = 0; i < 10; i++) {

        DemoData data = new DemoData();

        data.setSno(i);

        data.setSname("張三"+i);

        list.add(data);

    }

    return list;

}

(2)實現最終的添加操作(寫法一)



public static void main(String[] args) throws Exception {

    // 寫法1

    String fileName = "F:\\11.xlsx";

    // 這裏 需要指定寫用哪個class去寫,然後寫到第一個sheet,名字爲模板 然後文件流會自動關閉

    // 如果這裏想使用03 則 傳入excelType參數即可

    EasyExcel.write(fileName, DemoData.class).sheet("寫入方法一").doWrite(data());

}

(3)實現最終的添加操作(寫法二)


public static void main(String[] args) throws Exception {

    // 寫法2,方法二需要手動關閉流

    String fileName = "F:\\112.xlsx";

    // 這裏 需要指定寫用哪個class去寫

    ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();

    WriteSheet writeSheet = EasyExcel.writerSheet("寫入方法二").build();

    excelWriter.write(data(), writeSheet);

    /// 千萬別忘記finish 會幫忙關閉流

    excelWriter.finish();

}

 

二、實現EasyExcel對Excel讀操作

1、創建實體類

 



import com.alibaba.excel.annotation.ExcelProperty;

public class ReadData {

    //設置列對應的屬性

    @ExcelProperty(index = 0)

    private int sid;

    //設置列對應的屬性

    @ExcelProperty(index = 1)

    private String sname;

    public int getSid() {

        return sid;

    }

    public void setSid(int sid) {

        this.sid = sid;

    }

    public String getSname() {

        return sname;

    }

    public void setSname(String sname) {

        this.sname = sname;

    }

    @Override

    public String toString() {

        return "ReadData{" +

                "sid=" + sid +

                ", sname='" + sname + '\'' +

                '}';

    }

}

2、創建讀取操作的監聽器

 



import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;


//創建讀取excel監聽器


public class ExcelListener extends AnalysisEventListener<ReadData> {



    //創建list集合封裝最終的數據

    List<ReadData> list = new ArrayList<ReadData>();


    //一行一行去讀取excle內容

    @Override

    public void invoke(ReadData user, AnalysisContext analysisContext) {

       System.out.println("***"+user);

        list.add(user);

}

    //讀取excel表頭信息

    @Override

    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {

        System.out.println("表頭信息:"+headMap);

    }

    //讀取完成後執行

    @Override

    public void doAfterAllAnalysed(AnalysisContext analysisContext) {

    }

}

3、調用實現最終的讀取

 



   public static void main(String[] args) throws Exception {

        // 寫法1:

        String fileName = "F:\\01.xlsx";

        // 這裏 需要指定讀用哪個class去讀,然後讀取第一個sheet 文件流會自動關閉

        EasyExcel.read(fileName, ReadData.class, new ExcelListener()).sheet().doRead();

        // 寫法2:

        InputStream in = new BufferedInputStream(new FileInputStream("F:\\01.xlsx"));

        ExcelReader excelReader = EasyExcel.read(in, ReadData.class, new ExcelListener()).build();

        ReadSheet readSheet = EasyExcel.readSheet(0).build();

        excelReader.read(readSheet);

        // 這裏千萬別忘記關閉,讀的時候會創建臨時文件,到時磁盤會崩的

        excelReader.finish();

}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章