EasyExcelPOI——實現Excel讀寫的全能利器

一、簡介

EasyExcelPOI是一款基於Apache POI封裝的簡單易用的Java Excel讀寫工具。通過使用EasyExcelPOI,我們可以實現Excel文件的導入導出、數據的讀取和處理等功能,可以為Java程序員提供更方便快捷的Excel處理方式。它不但可以讀寫Excel文件,而且可以讀寫CSV文件。

二、優點

EasyExcelPOI是什麼?為什麼要使用它?EasyExcelPOI有以下幾個優點:

1、簡單易用:EasyExcelPOI採用POI進行封裝,使得讀寫Excel變得非常簡單易用。通過註解方式來映射Java對象和Excel的行,列,單元格等,規範了讀寫Excel文件的操作方式。

2、高效性:EasyExcelPOI採用POI進行封裝,採用了大數據量的非同步寫Excel的方式,使得性能得到了大幅提升。再加上一些自帶的優化,可以實現秒級讀取百萬數據並直接換成Java對象。

3、兼容性:EasyExcelPOI可以讀寫Excel2003和Excel2007及以上版本的文件,同時也支持讀寫CSV文件。可以滿足不同業務需要。

4、靈活性:EasyExcelPOI支持對Excel的全部操作,包括讀寫、樣式、合併、圖片等功能。可以通過靈活的定製,實現不同業務需求。

三、應用場景

EasyExcelPOI適用於各種Excel文件的讀寫場景,比如:

1、數據導入導出:可以將CSV或者Excel文件導入資料庫中,也可以把資料庫中的數據導出成Excel或CSV格式文件。

2、批量數據處理:可以通過Excel來處理批量數據,增刪改查等複雜操作變得簡單。

3、數據分析:可以將複雜的數據進行轉換、計算、篩選等操作,生成簡單的數據分析報告。

四、使用教程

1、 pom.xml添加依賴

<dependencies>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.2.10</version>
    </dependency>
</dependencies>

2、Java對象轉Excel

使用EasyExcelPOI把Java對象轉換成Excel,只需要如下幾個步驟:

1、創建一個Java對象,對象必須包含@com.alibaba.excel.annotation.ExcelProperty註解;

2、構建一個寫出對象並指定要寫出的文件,如下所示:

// 指定文件輸出路徑
String filename = "C:/test/student.xlsx";

// 構建寫出對象
try (OutputStream out = new FileOutputStream(filename)) {
    ExcelWriter writer = EasyExcel.write(out).build();
    // 將多個sheet寫入同一個文件中
    WriteSheet sheet1 = EasyExcel.writerSheet(0, "學生名單").build();
    WriteSheet sheet2 = EasyExcel.writerSheet(1, "成績單").build();
    writer.write(data1, sheet1);
    writer.write(data2, sheet2);
    writer.finish();
    out.flush();
}

3、把Java對象寫入Excel文件。

List list = new ArrayList();
... // 創建List list
try (OutputStream out = new FileOutputStream("C:/test/student.xlsx")) {
    ExcelWriter writer = EasyExcel.write(out, Student.class).build(); // 設置Java對象的類
    WriteSheet sheet1 = EasyExcel.writerSheet(0, "學生名單").build(); // 設置sheet名稱和位置
    writer.write(list, sheet1); // 把List寫入Excel
    writer.finish(); // 關閉
    out.flush();
}

3、Excel轉Java對象

使用EasyExcelPOI把Excel轉換成Java對象,只需要如下幾個步驟:

1、創建一個Java對象,對象必須包含@com.alibaba.excel.annotation.ExcelProperty註解;

2、構建一個讀入對象並指定要讀入的文件,如下所示:

// 指定文件路徑
String filename = "C:/test/student.xlsx";
try (InputStream inputStream = new FileInputStream(filename)) {
    ExcelReader reader = EasyExcel.read(inputStream).build(); // 創建讀取對象
    ReadSheet sheet1 = EasyExcel.readSheet(0).head(Student.class).build(); // 表示第一個sheet,映射到Student類
    reader.read(sheet1);
    List list = sheet1.getHeadRowNumber() == 0 ? sheet1.getList() : sheet1.getDatas(); // 從sheet1里獲取數據
    ... // 處理數據
}

3、把Excel文件讀取到Java對象中。

public class Student {
    @ExcelProperty("姓名")
    private String name;

    @ExcelProperty("年齡")
    private Integer age;

    @ExcelProperty("生日")
    private Date birthday;

    getters and setters ...
}

try (InputStream inputStream = new FileInputStream("C:/test/student.xlsx")) {
    ExcelReader reader = EasyExcel.read(inputStream, Student.class, new StudentExcelListener()).build();
    ReadSheet sheet1 = EasyExcel.readSheet(0).build();
    reader.read(sheet1);
}

4、Excel文件操作

EasyExcelPOI提供了一些常用的文件操作。

1、合併單元格,如下所示:

CellStyle cellStyle = ... // 設置單元格樣式
Sheet sheet = ... // 獲取sheet
sheet.addMergedRegion(new CellRangeAddress(rowStartIndex, rowEndIndex, columnStartIndex, columnEndIndex));
Cell cell = sheet.getRow(0).getCell(0);
cell.setCellValue("測試數據");
cell.setCellStyle(cellStyle);

2、設置單元格樣式,如下所示:

Workbook workbook = ... // 獲取workbook
Sheet sheet = ... // 獲取sheet
CellStyle cellStyle = workbook.createCellStyle();
... // 配置單元格樣式
Font font = workbook.createFont();
... // 配置字體
cellStyle.setFont(font); // 把字體設置到樣式中
cell.setCellStyle(cellStyle); // 把樣式設置到單元格中

3、插入圖片,如下所示:

Workbook workbook = ... // 獲取workbook
Sheet sheet = ... // 獲取sheet
ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();
... // 生成圖片
Drawing drawing = sheet.createDrawingPatriarch();
ByteArrayInputStream bais = new ByteArrayInputStream(byteArrayOut.toByteArray());
byteArrayOut.close();
byteArrayOut.flush();
int index;
index = workbook.addPicture(bais, Workbook.PICTURE_TYPE_PNG);
bais.close();
bais = new ByteArrayInputStream(data);
Picture picture = drawing.createPicture(new XSSFClientAnchor(), index);
picture.resize();
bais.close();

五、總結

EasyExcelPOI是一款基於Apache POI封裝的Java Excel讀寫工具,其具有簡單易用、高效性、兼容性和靈活性等優點。在實際應用場景中,我們可以使用EasyExcelPOI實現任何Excel導入導出、數據讀取和處理等功能。它的出現能夠為Java程序員提供更方便快捷的Excel處理方式,也是Excel讀寫的全能利器,希望大家能夠在實際開發中靈活應用。

原創文章,作者:EQLX,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/136112.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EQLX的頭像EQLX
上一篇 2024-10-04 00:15
下一篇 2024-10-04 00:15

相關推薦

發表回復

登錄後才能評論