一個簡單又快速的表格處理庫
大家好,我是魚皮。
處理 Excel 表格是開發中經常遇到的需求,比如表格合并、篩選表格中的某些行列、修改單元格資料等。
今天給大家分享一個 Java 處理表格的工具庫,不需要任何專業知識,拿來就能用,快速又輕松~

可能有同學說了,用 Python 處理表格不是更友善麼?為毛用 Java 啊?
當然是因為企業中大部分背景開發用的都是 Java!如果你要搞一個允許使用者自主上傳 Excel 進行處理的服務,那顯然直接用 Java 來實作最友善~
要介紹的庫是阿裡的 Easy Excel,簡單、省記憶體的讀寫 Excel 的開源項目。
文檔位址:https://www.yuque.com/easyexcel/doc/easyexcel
直接打開官方文檔,就能看到項目的使用說明了:
首先在項目中引入 Easy Excel(版本号以文檔中的最新版本号為主):
然後進入文檔的 快速開始 部分,就可以看到讀取和寫入表格資料的方法了。
下面讓我們以一個實際需求為例,試着使用一下這個庫。
假設我們有這樣一個 Excel 表格:
如果想要調換 姓名列 和 年齡列 的順序,應該怎麼做呢?
首先要讀取原始表格中的資料。
Easy Excel 提供了兩種讀取表格的方式:建立對象的讀 和 不建立對象的讀 。
如果你已知整個表格的表頭資訊,比如列名(比如 “姓名”)和列的資料類型(比如字元串),那麼可以建立一個對應的類,用來在 Java 中表示表格的元資訊。
比如為上述表格建立 <code>YupiData</code> 類,代碼如下:
預設會根據屬性的順序來關聯表格列的順序,比如 name 對應姓名(第 0 列)、age 對應年齡(第 1 列)。
當然,你也可以使用注解的方式來指定每個屬性對應的表格列,支援指定下标和列名,代碼如下:
定義好了表格資料類,就可以開始讀取了,該庫非常貼心,提供了 同步 和 異步 兩種讀取方式。
同步是指一次性讀取表格中的所有行,以清單的方式完整傳回,再整體去處理。由于這種方式會将資料完整加載到記憶體中,是以隻 适用于表格行數比較少 的情況。代碼如下:
異步方式需要定義一個 監聽器 ,每讀取一行,就要立即去處理該行資料。這樣就不需要将所有資料都加載到記憶體中,算一行讀一行,理論上算完了也可以丢棄。代碼如下:
如果事先不清楚表格會有哪些列、類型如何(比如讓使用者自主上傳表格),那麼可以使用 不建立對象讀 的方式,直接用 <code>Map<Integer, String></code> 泛型類來接收:
當然,這種讀取方式也同時支援同步和異步,可以根據需求選擇方式,靈活的一批!
學會讀取後,寫入表格就更簡單了,依然是先定義一個類,用來表示要寫入表格的元資訊(列名、列資料類型等)。
比如要完成表格列順序調換的需求,定義表格資料類的時候,把 age 和 name 屬性的順序換一下就好了:
然後執行 Easy Excel 的 write 方法,就完事了,代碼如下:
搞定,是不是賊簡單!
除了這個庫外,Java 處理 Excel 的庫還有很多,比如 Apache POI、Hutool 等,大家可以去試試。但我個人感覺還是 Easy Excel 更對我的胃口。
好了,是不是很簡單了,有興趣的話自己寫個表格處理程式吧~
學到的話,幫魚皮點個 贊 呗,感謝!