首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

ExcelReads:一個基於註解與鏈式 API 的通用 Excel 讀寫工具庫

     編輯:Java 綜合教學

ExcelReads:一個基於註解與鏈式 API 的通用 Excel 讀寫工具庫

專案地址:GitHub - MatrixSeven/ExcelReads
依賴 Apache POI,Maven 構建,支援 Java 8+ Lambda 風格鏈式調用,適合簡單表格的快速導入導出。

核心特性

  • 讀取:支援 JavaBean 映射(註解驅動)與 Map 自動映射,可配置標題行、數據起始行、Sheet 範圍。
  • 寫入:支援 JavaBean(註解)、Map、List 直接導出 .xls/.xlsx,可過濾列、行過濾、排序、數據轉換。
  • 數據庫導出:直接接收 ResultSet,自動映射為 Map 或 Bean 導出。
  • 事件式處理:Process(行轉換)、Filter(行過濾)、FilterCol(列過濾)、Sort(排序)鏈式調用。
  • 校驗:Bean 註解 @ExcelAnno(value="標題", required="正則"),Map 陣列規則校驗。

快速開始

// Maven 依賴
<dependency>
  <groupId>com.seven</groupId>
  <artifactId>excel-reads</artifactId>
  <version>1.0.0</version>
</dependency>

讀取範例

// 讀取到 Map 列表
List> data = ExcelFactory.getBeans("test.xls",
    new ResWrapperMap() {{
        config.setTitleRow(2);
        config.setContentRowStart(3);
    }}
    .process(map -> System.out.println(map))
    .filterCol(() -> new String[]{"忽略列"})
    .filter(map -> map.get("創建人").length() > 5)
    .sort((m1, m2) -> m1.hashCode() - m2.hashCode())
    .create());

// 讀取到 Bean 並轉 Map
Map map = new ResWrapperObj(Seven.class) {{
    config.setTitleRow(2);
    config.setContentRowStart(3);
}}
.process(map -> {})
.filterCol(() -> new String[]{})
.filter(map -> map.get("創建人").length() > 4)
.<Map>createMap("創建人");

寫入範例

// Bean 列表導出
List list = Arrays.asList(new A("a","b"), new A("aa","bb"));
ExcelFactory.saveExcel(list, "out.xlsx")
    .process(a -> a.setA("xxxx"))
    .filterCol(() -> new String[]{"B"})
    .filter(a -> a.getA().length() > 1)
    .sort((o1, o2) -> o1.getAge() - o2.getAge())
    .save();

// 數據庫直接導出
ExcelFactory.saveExcel(conn.prepareStatement("SELECT * FROM users LIMIT 10000").executeQuery(),
    "export.xlsx")
    .filterCol(() -> new String[]{"updatetime"})
    .filter(map -> "北京".equals(map.get("address")))
    .save();

// Class 類型導出(最簡潔)
ExcelFactory.saveExcel(rs, "export.xlsx", AS.class)
    .filterCol(() -> new String[]{"updatetime"})
    .filter(o -> o.getA().length() > 3)
    .save();

更新日誌精選

  • 2017-01-05:修復資料庫導出 Object 遞歸棧溢出、新增 Class 類型導出、導出註解支援。
  • 2017-01-04:修復 Map 導出空指針/越界、Filter 後空行問題。
  • 2017-01-01:新增 ResExportDBMap/ResExportDBObj 支援資料庫直接導出。
  • 2016-11-30:寫入功能上線(Bean/Map、註解、過濾/排序/轉換)。

性能參考

7 萬條數據:Bean 模式比 Map 慢約 800ms,啟用正則校驗會進一步降低速度。純讀取場景建議優先使用 Map 模式。

聯繫作者

  • Email: hacker.kill07@gmail.com
  • QQ: 985390927
  • Weibo: @Alden_情緒控
  • Blog: https://sweets.cf
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved