天天看點

Java 處理表格,真的很爽!

一個簡單又快速的表格處理庫

大家好,我是魚皮。

處理 Excel 表格是開發中經常遇到的需求,比如表格合并、篩選表格中的某些行列、修改單元格資料等。

今天給大家分享一個 Java 處理表格的工具庫,不需要任何專業知識,拿來就能用,快速又輕松~

Java 處理表格,真的很爽!

可能有同學說了,用 Python 處理表格不是更友善麼?為毛用 Java 啊?

當然是因為企業中大部分背景開發用的都是 Java!如果你要搞一個允許使用者自主上傳 Excel 進行處理的服務,那顯然直接用 Java 來實作最友善~

Java 處理表格,真的很爽!

要介紹的庫是阿裡的 Easy Excel,簡單、省記憶體的讀寫 Excel 的開源項目。

文檔位址:https://www.yuque.com/easyexcel/doc/easyexcel

直接打開官方文檔,就能看到項目的使用說明了:

Java 處理表格,真的很爽!

首先在項目中引入 Easy Excel(版本号以文檔中的最新版本号為主):

然後進入文檔的 快速開始 部分,就可以看到讀取和寫入表格資料的方法了。

下面讓我們以一個實際需求為例,試着使用一下這個庫。

假設我們有這樣一個 Excel 表格:

Java 處理表格,真的很爽!

如果想要調換 姓名列 和 年齡列 的順序,應該怎麼做呢?

首先要讀取原始表格中的資料。

Easy Excel 提供了兩種讀取表格的方式:建立對象的讀 和 不建立對象的讀 。

如果你已知整個表格的表頭資訊,比如列名(比如 “姓名”)和列的資料類型(比如字元串),那麼可以建立一個對應的類,用來在 Java 中表示表格的元資訊。

比如為上述表格建立 <code>YupiData</code> 類,代碼如下:

預設會根據屬性的順序來關聯表格列的順序,比如 name 對應姓名(第 0 列)、age 對應年齡(第 1 列)。

當然,你也可以使用注解的方式來指定每個屬性對應的表格列,支援指定下标和列名,代碼如下:

定義好了表格資料類,就可以開始讀取了,該庫非常貼心,提供了 同步 和 異步 兩種讀取方式。

同步是指一次性讀取表格中的所有行,以清單的方式完整傳回,再整體去處理。由于這種方式會将資料完整加載到記憶體中,是以隻 适用于表格行數比較少 的情況。代碼如下:

異步方式需要定義一個 監聽器 ,每讀取一行,就要立即去處理該行資料。這樣就不需要将所有資料都加載到記憶體中,算一行讀一行,理論上算完了也可以丢棄。代碼如下:

如果事先不清楚表格會有哪些列、類型如何(比如讓使用者自主上傳表格),那麼可以使用 不建立對象讀 的方式,直接用 <code>Map&lt;Integer, String&gt;</code> 泛型類來接收:

當然,這種讀取方式也同時支援同步和異步,可以根據需求選擇方式,靈活的一批!

學會讀取後,寫入表格就更簡單了,依然是先定義一個類,用來表示要寫入表格的元資訊(列名、列資料類型等)。

比如要完成表格列順序調換的需求,定義表格資料類的時候,把 age 和 name 屬性的順序換一下就好了:

然後執行 Easy Excel 的 write 方法,就完事了,代碼如下:

搞定,是不是賊簡單!

除了這個庫外,Java 處理 Excel 的庫還有很多,比如 Apache POI、Hutool 等,大家可以去試試。但我個人感覺還是 Easy Excel 更對我的胃口。

好了,是不是很簡單了,有興趣的話自己寫個表格處理程式吧~

學到的話,幫魚皮點個 贊 呗,感謝!

Java 處理表格,真的很爽!