Java對Excel的讀寫操作
阿新 • • 發佈:2021-01-20
技術標籤:工具類
通過Alibaba的EasyExcel可以實現Excel的操作
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
寫操作
//實體類
@Data
public class DemoData {
//表頭1
@ExcelProperty("學生編碼")
private int sno;
//表頭2
@ExcelProperty("學生姓名")
private String sname;
@Override
public String toString(){
return "DemoData{"+"sno="+sno+",sname="+sname+ '\'' + '}';
}
}
-------------
//工具類
public class WriteTestEasyExcel {
public static void main(String[] args) {
//檔案路徑,不存在則建立,存在則追加
String fileName="D:\\\\33.xlsx";
//fileName檔案路徑,DemoData引數實體類,sheet表名
EasyExcel.write(fileName,DemoData.class).sheet("學生列表").doWrite(data());
}
//寫操作,可批量寫入
private static List<DemoData> data(){
List<DemoData> list=new ArrayList<DemoData>();
DemoData data=new DemoData();
data.setSno(i);
data.setSname("張三"+i);
list.add(data);
return list;
}
}
讀操作
//實體類
@Data
public class ReadData {
//讀取表頭
@ExcelProperty(index = 0)
private int sid;
@ExcelProperty(index = 1)
private String sname;
@Override
public String toString(){
return "DemoData{"+"sno="+sid+",sname="+sname+ '\'' + '}';
}
}
---------
//讀取監聽器
public class ExcelListener extends AnalysisEventListener<ReadData> {
//最終資料
List<ReadData> list=new ArrayList<ReadData>();
//讀取每一行excel
@Override
public void invoke(ReadData data, AnalysisContext analysisContext) {
System.out.println(data);
list.add(data);
}
//讀取excel表頭資訊
@Override
public void invokeHeadMap(Map<Integer,String> headMap,AnalysisContext context){
System.out.println("*****"+headMap);
}
//讀取完執行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
----------
//讀取操作
public class ReadTestEasyExcel {
public static void main(String[] args) {
//檔案的全限路徑
String fileName="D:\\\\11.xlsx";
EasyExcel.read(fileName,ReadData.class,new ExcelListener()).sheet().doRead();
}
}