EasyExcel庫來讀取指定Excel檔案中的資料

丶Ronnie發表於2024-03-28
             File excelFile = new File(path);
                if (!excelFile.exists()) {
                    throw new Exception("The specified excel file does not exist at path: " + path);
                }
                // 使用EasyExcel讀取檔案
                List<SpdSurveyContainerEo> voList = new ArrayList<>();
                // 獲取絕對路徑並初始化ExcelReader物件,用於讀取Excel檔案
                try (ExcelReader excelReader = EasyExcel.read(excelFile.getAbsolutePath())
                      // 構建ExcelReader例項   
                     .build()) {
                    // 配置讀取特定工作表,這裡設定為讀取第1個工作表
                    ReadSheet readSheet = EasyExcel.readSheet(1)
                             // 設定Java實體類與Excel表頭的對映關係,根據A類的屬性來解析資料
                            .head(A.class)
                            // 註冊一個讀取監聽器,處理逐行讀取的資料
                            .registerReadListener(new ReadListener<A>() {
                                // 當一行資料被解析時觸發此方法
                                @Override
                                public void invoke(A data, AnalysisContext context) {
                                    // 將解析出的一行資料轉換成A物件,並新增到voList集合中
                                    voList.add(data);
                                }
                                 // 所有資料解析完畢後觸發此方法
                                @Override
                                public void doAfterAllAnalysed(AnalysisContext context) {
                                    // 可在此處新增所有資料解析完成後的處理邏輯,如關閉資源等
                                }// 完成監聽器配置
                            })
                        // 建立並返回已配置的ReadSheet物件
                        .build();
                     // 開始執行實際的讀取操作
                    excelReader.read(readSheet);// 透過ExcelReader讀取之前配置好的ReadSheet
                } catch (Exception e) {
                    // 處理可能丟擲的異常,例如檔案讀取錯誤等
                    e.printStackTrace();
                }

這段Java程式碼使用了阿里巴巴開源的EasyExcel庫來讀取指定Excel檔案中的資料。首先,它初始化了一個ExcelReader物件,指向目標Excel檔案。然後,針對第一個工作表(索引為1),配置了一個ReadSheet,指定資料模型為SpdSurveyContainerEo類,這樣可以自動將Excel表格的列對應到這個Java物件的屬性上。同時註冊了一個ReadListener,當讀取到Excel表格的每一行資料時,會呼叫invoke方法,將當前行的資料轉換為SpdSurveyContainerEo物件並加入到voList列表中。最後,在讀取完所有資料後,還會呼叫doAfterAllAnalysed方法,可用於執行後續的操作。透過呼叫excelReader.read(readSheet)啟動實際的讀取過程。注意,這段程式碼應該在一個try-catch塊中以捕獲潛在的異常。

相關文章