使用Java進行excel操作的幾種方法 (下)

2021-12-29 傳智教育博學谷

easyexcel是阿里巴巴開源的一款excel解析工具,底層邏輯也是基於apache poi進行二次開發的。不同的是,再讀寫數據的時候,採用sax模式一行一行解析,在並發量很大的情況下,依然能穩定運行!

下面就一起來了解一下這款新起之秀!

3.1 添加依賴包

<!-- EasyExcel --><dependency>     <groupId>com.alibaba</groupId>     <artifactId>easyexcel</artifactId>     <version>2.2.6</version> </dependency> <!--常用工具庫--> <dependency>     <groupId>com.google.guava</groupId>     <artifactId>guava</artifactId>     <version>29.0-jre</version> </dependency>

3.2 採用註解導出導入

easyexcel同樣也支持採用註解方式進行導出、導入!

首先,我們創建一個實體類UserEntity,其中@ExcelProperty註解表示導出文件的頭部信息。

3.2.1 導出操作

package cn.tedu.excel.easyexcel;
import com.alibaba.excel.EasyExcel;import com.alibaba.excel.annotation.ExcelProperty;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import org.springframework.format.annotation.DateTimeFormat;
import java.util.ArrayList;import java.util.Date;import java.util.List;
@Data@NoArgsConstructor@AllArgsConstructorpublic class UserEntity { @ExcelProperty(value = "姓名") private String name;
@ExcelProperty(value = "年齡") private int age;
@DateTimeFormat(fallbackPatterns = "yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "操作時間") private Date time;
public static void main(String[] args) { List<UserEntity> dataList = new ArrayList<>(); for (int i = 0; i < 10; i++) { UserEntity userEntity = new UserEntity(); userEntity.setName("張三" + i); userEntity.setAge(20 + i); userEntity.setTime(new Date(System.currentTimeMillis() + i)); dataList.add(userEntity); } EasyExcel.write("/Users/lixin/Desktop/easyexcel-user1.xls", UserEntity.class).sheet("用戶信息").doWrite(dataList); }}

package cn.tedu.excel.easyexcel;
import com.alibaba.excel.EasyExcel;import org.json.simple.JSONArray;
import java.util.List;
public class DemoData {    public static void main(String[] args) {        String filePath = "/Users/lixin/Desktop/easyexcel-user1.xls";        List<DemoData> list = EasyExcel.read(filePath).head(UserEntity.class).sheet().doReadSync();        System.out.println(JSONArray.toJSONString(list));    }}

[UserEntity(name=張三0, age=20, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三1, age=21, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三2, age=22, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三3, age=23, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三4, age=24, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三5, age=25, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三6, age=26, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三7, age=27, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三8, age=28, time=Mon Mar 29 16:42:20 CST 2021),UserEntity(name=張三9, age=29, time=Mon Mar 29 16:42:20 CST 2021)]

3.3 自定義數據結構導出導入

easyexcel同樣也支持自定義數據結構導出、導入excel。

3.3.1 導出操作

public static void main(String[] args) {    //表頭    List<List<String>> headList = new ArrayList<>();    headList.add(Lists.newArrayList("姓名"));    headList.add(Lists.newArrayList("年齡"));    headList.add(Lists.newArrayList("操作時間"));
   //數據體    List<List<Object>> dataList = new ArrayList<>();    for (int i = 0; i < 10; i++) {        List<Object> data = new ArrayList<>();        data.add("張三" + i);        data.add(20 + i);        data.add(new Date(System.currentTimeMillis() + i));        dataList.add(data);    }    EasyExcel.write("/Users/hello/Documents/easyexcel-user2.xls").head(headList).sheet("用戶信息").doWrite(dataList);}

public static void main(String[] args) {    String filePath = "/Users/panzhi/Documents/easyexcel-user2.xls";    UserDataListener userDataListener = new UserDataListener();    EasyExcel.read(filePath, userDataListener).sheet().doRead();    System.out.println("表頭:" + JSONArray.toJSONString(userDataListener.getHeadList()));    System.out.println("數據體:" + JSONArray.toJSONString(userDataListener.getDataList()));}

表頭:[{0:"姓名",1:"年齡",2:"操作時間"}]數據體:[{0:"張三0",1:"20",2:"2021-03-29 16:31:39"},{0:"張三1",1:"21",2:"2021-03-29 16:31:39"},{0:"張三2",1:"22",2:"2021-03-29 16:31:39"},{0:"張三3",1:"23",2:"2021-03-29 16:31:39"},{0:"張三4",1:"24",2:"2021-03-29 16:31:39"},{0:"張三5",1:"25",2:"2021-03-29 16:31:39"},{0:"張三6",1:"26",2:"2021-03-29 16:31:39"},{0:"張三7",1:"27",2:"2021-03-29 16:31:39"},{0:"張三8",1:"28",2:"2021-03-29 16:31:39"},{0:"張三9",1:"29",2:"2021-03-29 16:31:39"}]

相關焦點

  • 使用Java進行excel操作的幾種方法(上)
    很久以前,微軟的電子表格軟體Excel操作簡單、存儲數據直觀方便,還支持列印報表,極大的提升了工作的效率,深得白領青睞,不久之後,便成了辦公室裡的必備工具。隨著更多的新語言的崛起,例如我們所熟悉的Java,後來便有一些團隊開始開發一套能與Excel軟體無縫切換的操作工具!
  • 用Java玩轉Excel,竟然如此easy~
    office文檔的,多數時候用來操作excel,所以這裡就以excel方面來說明。其下有兩個實現類:所以在針對不同版本的excel時,需要對應以上使用不同的Workbook。is)2.2 標籤頁 SheetHSSFSheet 和 XSSFSheet 都是Sheet接口的實現類,Sheet可以使用Workbook的兩個方法獲得:workbook.createSheet();workbook.createSheet(String sheetName);2.3 行 Row同理,Row是 HSSFRow 和 XSSFRow
  • 淺談使用Python對Excel文件進行拆分
    問題描述上一次講到使用 Python 對 Excel 多 sheet 進行合併,那麼這一次就來講一下合併的逆操作「拆分」。2.解決方法2.1 按欄位中固定分類拆分需要先對「世代」欄位中的「分類進行去重」,可以使用「元組(set)結合 list(列表)」,也可以使用「drop_duplicates()方法結合 list(列表)」。
  • Github上一個Java玩轉Excel的項目
    EasyExcel對POI進行了優化改進,讓我們操作Excel更加的方便,話不多說直接交大家如何使用:案例項目是基於spring-boot的一。關注於哥B站:程式設計師於小二,學習更多的編程技巧1).invoke方法是每讀取到一條數據都會進行回調2).doAfterAllAnalysed是當Excel讀取完成之後回調2.當然我們可以點開AnalysisEventListener源碼看一下,發現他也是繼承ReadListener接口,接口方法有5個,分別是 onException異常回調,invokeHead 標題讀取回調
  • Excel輸入日期的幾種方法
    چېسلا ۋە ۋاقىتنى كىرگۈزۈش ئۇسۇلى1、在搜狗/QQ拼音/谷歌等輸入法下直接輸入3、text函數輸入帶星期的日期:=TEXT(TODAY(),"YYYY年MM月DD日AAAA")在單元格中輸入公式函數 =TEXT(TODAY(),"YYYY年MM月DD日AAAA"),後按回車鍵,可進行系統帶星期日期的時間獲取
  • 花了 5 分鐘就搞定了 Java 下載和解析 Excel
    工欲善其事必先利其器,果然有道理,之前經常做一些 Excel 的解析和寫入,大家估計也對 jxl 和 poi 有所耳聞,操作起來那是一塌糊塗,需要了解裡面的各種變量,然而這次我們使用的是阿里開源的 EasyExcel,5分鐘搞定下載和上傳解析。
  • 像Excel一樣使用python進行數據分析
    在開始使用python進行數據導入前需要先導入pandas庫,為了方便起見,我們也同時導入numpy庫。import numpy as npimport pandas as pd導入數據表下面分別是從excel和csv格式文件導入數據並創建數據表的方法。
  • java——Scnner()類下面有幾種方法呢?
    extends Object implements Iterator Scanner 使用分隔符模式將其輸入分解為標記,默認情況下該分隔符模式與空白匹配。然後可以使用不同的 next 方法將得到的標記轉換為不同類型的值。
  • java如何處理excel文件?(附項目源碼)
    Excel被稱為使用最廣泛的數據分析軟體,它能夠和很多程式語言結合使用,例如java、R、c等常用語言。
  • C# 使用NPOI操作Excel文件
    this feature is used to create search engines).c. extract images from Office documentsd. generate Excel sheets that contains formulas在沒有安裝Microsoft Office Excel的機子上也可以對Excel進行操作
  • java調用webservice接口的幾種方法
    webservice的 發布一般都是使用WSDL(web service descriptive language)文件的樣式來發布的,在WSDL文件裡面,包含這個webservice暴露在外面可供使用的接口。
  • 使用Java Rest Client操作Elasticsearch
    java語言開發的,所以對Java的支持應該是最到位了,此外es也支持rest ful的DSL的訪問方式,我們可以在linux上輕鬆的使用curl命令來對es進行增刪改查,curl的操作方式大多數都是臨時的,實際開發的我們還是用程式語言來訪問的:es支持Java API的訪問方式,支持非常全面,唯一的缺點就是依賴有點多,代碼稍臃腫,有時候我們想簡單的開發一個非常小的功能,又不想使用java
  • 如何使用 Java 靈活讀取 Excel 內容 ?
    Excel 讀操作,很容易造成內存溢出問題。本博文源碼在公眾號:Java後端,後臺回復 excel 獲取。,EasyExcel 通過 @DateTimeFormat 註解進行格式化到這裡都是以測試的方式來編寫程序代碼,作為 Java Web 開發人員,尤其在目前主流 Spring Boot 的架構下,所以如何實現 Web 方式讀取 Excel 的信息呢?
  • 每日一課 | Apache POI –用Java讀寫Excel文件
    Apache POI庫的基本定義本節簡要介紹有關Excel讀寫期間使用的基本類。HSSF在類名之前添加前綴,以指示與Microsoft Excel 2003文件相關的操作。XSSF在類名之前添加前綴,以指示與Microsoft Excel 2007文件或更高版本相關的操作。
  • 如何用pandas對excel中的文本數據進行操作
    excel進行數據的操作最便捷的庫是pandas,但是如何使用pandas對excel中的文本進行清洗,這是一個很技巧性的工作。
  • 小課堂|計算文件Checksum的幾種方法
    java程序計算出不同算法的checksum值,包括MD5、SHA-1,SHA-256以及SHA-512。接下來,我們一起看下怎麼使用java程序產生相關的checksum值,本文以文件poi-bin-4.1.0-20190412.tar.gz為例,具體可以通過如下路徑下載:http://mirror.bit.edu.cn/apache/poi/release/bin/poi-bin-4.1.0-20190412.
  • pandas操作excel全總結
    pandas是基於Numpy創建的Python包,內置了大量標準函數,能夠高效地解決數據分析數據處理和分析任務,pandas支持多種文件的操作,比如Excel,csv,json,txt 文件等,讀取文件之後,就可以對數據進行各種清洗、分析操作了。
  • python中使用xlrd、xlwt操作excel表格詳解
    這篇文章主要介紹了python中使用xlrd、xlwt操作excel表格詳解,python操作excel主要用到xlrd和xlwt
  • Java 實現word、excel、ppt、txt等辦公文件在線預覽功能!
    java 實現辦公文件在線預覽功能是一個大家在工作中也許會遇到的需求,網上些公司專門提供這樣的服務,不過需要收費。我這裡介紹通過poi實現word、excel、ppt轉pdf流,這樣就可以在瀏覽器上實現預覽了。https://www.openoffice.org/download安裝包,安裝運行。(不同系統的安裝方法,自行百度,這裡不做過多說明)再項目的pom文件中引入依賴<!
  • lavavel-excel使用
    在日常工作中,使用excel的頻率還是很高的,所以免不了使用laravel-excel來處理,laravel-excel其實使用的還是phpexcel