EasyExcel的簡單讀取操作
- Java領域決議、生成Excel比較有名的框架有Apache poi、 jxl等,但他們都存在一個嚴重的問題就是
非常的耗記憶體,如果你的系統并發量不大的話可能還行,但是一旦并發上來后一定會OOM或
者JVM頻繁的full gc, - EasyExcel是阿里巴巴開源的一個excel處理框架, 以使用簡單、節省記憶體著稱, EasyExcel能大大減
少占用記憶體的主要原因是在決議Excel時沒有將檔案資料一次性全部加載到記憶體中,而是從磁盤上一
行行讀取資料,逐個決議, - EasyExcel采用一行一行的決議模式,并將一行的決議結果以觀察者的模式通知處理
(AnalysisEventListener),
摘自官網
匯入依賴
這個版本之間有個對應關系,不然會報錯,
<!--xls-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<!--xlsx-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<!-- easyexcel依賴 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
創建物體類
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DemoData {
// 設定表頭名稱,index表示的是編號的索引
@ExcelProperty(value = "學生編號",index = 0)
private Integer sno;
@ExcelProperty(value = "學生姓名",index = 1)
private String sname;
}
用EasyExcel進行寫操作測驗
/**
* easyExcel寫操作測驗
*/
@Test
public void write() {
String outputFile = "E:\\write11.xlsx";
EasyExcel.write(outputFile, DemoData.class).sheet("學生串列").doWrite(TestEasyExcel.getData());
}
private static List<DemoData> getData() {
List<DemoData> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
String name = UUID.randomUUID().toString().replace("-", "").substring(0, 5);
list.add(new DemoData(i, name));
}
return list;
}


用EasyExcel進行讀操作
讀的時候要ExcelListener監聽器,
創建ExcelListener類繼承AnalysisEventListener帶上excel表格中的物件
/**
* Created with IntelliJ IDEA.
* @Author: pzx
* @Date: 2022/01/30 15:46
* @Version:1.0
*/
public class ExcelListener extends AnalysisEventListener<DemoData> {
// 一行一行去讀取excel中的內容(表頭不會去讀取)
@Override
public void invoke(DemoData data, AnalysisContext context) {
System.out.println("********" + data);
}
// 讀取表頭中的內容
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表頭\t" + headMap);
}
// 讀取完成之后做的內容
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
}
}
代碼測驗
/**
* easyExcel讀操作測驗
*/
@Test
public void read() {
String outputFile = "E:\\write11.xlsx";
// 加上繼承了AnalysisEventListener類的監聽器
ExcelListener excelListener = new ExcelListener();
EasyExcel.read(outputFile,DemoData.class, excelListener).sheet().doRead();
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423216.html
標籤:其他
下一篇:節前國債逆回購
