EasyExcel簡介
官網
[](參考 https://www.cnblogs.com/FraserYu/p/11717665.html)
物體類
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Goods implements Serializable {
private static final long serialVersionUID = -2737659835949653933L;
/**
* 商品編號
*/
@ExcelProperty(value = "編號")
private Integer id;
/**
* 商品名稱
*/
@ExcelProperty("商品名稱")
private String name;
/**
* 市場價格
*/
@ExcelProperty("市場價格")
private double price1;
/**
* 會員價格
*/
@ExcelProperty("會員價格")
private double price2;
/**
* 商品庫存數量
*/
@ExcelProperty("庫存數量")
private Integer amount;
}
生成Excel檔案
public static void main(String[] args) {
final ArrayList<Goods> arrayList = new ArrayList<>();
for(int i =10;i<20;i++){
final Goods goods = new Goods(i, "name_" + i, 100 + i, 50 + i, 5 * i);
arrayList.add(goods);
}
String fileName = "demo" + System.currentTimeMillis() + ".xlsx";
EasyExcel.write(fileName, Goods.class).sheet("商品資訊").doWrite(arrayList);
}
結果:

小型 Excel檔案的讀取
public static void main(String[] args) {
final ExcelReaderBuilder builder = EasyExcel.read(new File("demo1635823544855.xlsx"));
final List<Object> list = builder.doReadAllSync();
list.forEach(System.out::println);
}
結果:

大型 Excel檔案的讀取
- 創建決議監聽器
@Log4j2
public class GoodsExcelListener extends AnalysisEventListener<Goods> {
/**
* 批處理閾值
*/
private static final int BATCH_COUNT = 20;
@Getter
List<Goods> list = new ArrayList<>(BATCH_COUNT);
@Override
public void invoke(Goods goods, AnalysisContext analysisContext) {
log.info("決議到一條資料:{}", JSON.toJSONString(goods));
list.add(goods);
if (list.size() >= BATCH_COUNT) {
log.info("已經決議{}條資料", list.size());
list.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
log.info("存盤資料庫成功!");
log.info("所有資料決議完成!");
}
}
- 具體的讀取Excel的代碼:
public static void main(String[] args) {
EasyExcel.read("demo1635823544855.xlsx", Goods.class, new GoodsExcelListener())
.sheet()
.doRead();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/345803.html
標籤:其他
上一篇:大話觀察者模式以及日常參考
