easyExcel的作用 , 通過java代碼操作excel表格
一.對Excel的寫操作
- 引入依賴
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
- 創建與excle對應的實體類
package com.example.test.excle;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class DemoData {
@ExcelProperty("學生編號")//設置excle表頭名稱
private Integer sno;
@ExcelProperty("學生姓名")//設置excle表頭名稱
private String sname;
}
- 創建測試類
package com.example.test.excle;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class TestEasyExcel {
public static void main(String[] args) {
//實現excle寫的操作
//1 設置寫入文件夾的地址和excle文件名稱
String filename = "F:\\write.xlsx";
//2 調用easyExcel裏面的方法實現寫操作
// write方法中兩個參數 , 第一個是文件存儲的路徑名稱 , 第二個是實體類.class
EasyExcel.write(filename , DemoData.class).sheet("學生列表").doWrite(getData());
}
//創建一個方法返回list集合
private static List<DemoData> getData(){
List<DemoData> list = new ArrayList<>();
for(int i = 0 ; i < 10 ; i++){
DemoData demoData = new DemoData();
demoData.setSname("marry" + i);
demoData.setSno(i);
list.add(demoData);
}
return list;
}
}
二.對excel的讀操作
- 引入依賴
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
- 創建實體類
package com.example.test.excle;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class DemoData {
@ExcelProperty(value = "學生編號" , index = 0)//設置excle表頭名稱
private Integer sno;
@ExcelProperty(value = "學生姓名" , index = 1)//設置excle表頭名稱
private String sname;
}
- 創建監聽進行excel文件的讀取
package com.example.test.excle;
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) {
}
}
- 方法調用
package com.example.test.excle;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class TestEasyExcel {
public static void main(String[] args) {
// 實現exce讀操作
String filename = "F:\\write.xlsx";
EasyExcel.read(filename , DemoData.class , new ExcelListener()).sheet().doRead();
}
}