CompletableFuture實現Excel 多個sheet頁批量導出
文章目錄
- CompletableFuture實現Excel 多個sheet頁批量導出
-
-
- 為什么不能直接合并文件或Sheet?
- 我的方案合理性
- 1. 操作實現步驟
-
- 1.1、導入所需要的依賴
- 1.2 、Excel 導入導出對象
- 1.3、異步生成 Excel 文件到指定路徑
- 1.4、合并多個 Excel 文件的 Sheet(保留樣式)
- 1.5、Excel 導出接口
-
最近在做多數據導出的時候,需要將數據導出在不同的數據sheet頁中,苦于沒有第三方工具包那能直接處理,于是就自己手寫了一個
注意:我查一系列的操作excel的官網發現EasyExcel、JExcelApi、apachePoi等也沒有“直接合并文件”API。
哪怕是 Apache POI 提供的 Workbook.cloneSheet() 復制當前工作簿內部的 Sheet,但不能跨文件復制。
必須通過代碼遍歷 Sheet、Row、Cell,把內容和樣式挨個復制,才算是“合并”。
為什么不能直接合并文件或Sheet?
- Excel 文件不是簡單的文本或數據文件,是一個 ZIP 壓縮的多部分復合結構。
- 每個 Sheet、樣式、字體、圖片等都有自己獨立的 XML 文件和關系映射。
- 直接“拼接”文件會導致結構錯亂,打不開或出錯。
- 需要按POI的數據模型逐一復制內容和樣式。
我的方案合理性
- 我目前用
copySheet
按行復制,是最標準、最穩定的做法。 - 也可以嘗試擴展,比如復制合并單元格、列寬、數據驗證、圖片等(需要額外代碼),讓合并更