成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

干掉EasyExcel!FastExcel初體驗

開發 前端
FastExcel 依然是原來的那個 EasyExcel,但又不完全是 EasyExcel,希望 FastExcel 越做越好。各位小伙伴們,一起體驗起來吧。

我們知道 EasyExcel 在作者從阿里離職之后就停止維護了,但在前兩周 EasyExcel 原作者推出了他的升級版框架 FastExcel。以下是 FastExcel 的上手實戰過程,帶大家一起提供新框架的魅力。

FastExcel 是由原 EasyExcel 作者創建的最新作品,作者在 2023 年從阿里離職后,隨著阿里宣布停止更新 EasyExcel,所以他就決定繼續維護和升級這個項目。在重新開始時,作者為它起名為 FastExcel,以突出這個框架在處理 Excel 文件時的高性能表現,而不僅僅是簡單易用。

FastExcel 仍是免費的開源框架,它具備以下特點:

  • 完全兼容原 EasyExcel 的所有功能和特性,這使得用戶可以無縫過渡。
  • 從 EasyExcel 遷移到 FastExcel 只需簡單地更換包名和 Maven 依賴即可完成升級。
  • 在功能上,比 EasyExcel 提供更多創新和改進。
  • FastExcel 1.0.0 版本新增了讀取 Excel 指定行數和將 Excel 轉換為 PDF 的功能。

FastExcel 具體使用如下。

FastExcel 使用

1.添加依賴

<dependency>
  <groupId>cn.idev.excel</groupId>
  <artifactId>fastexcel</artifactId>
  <version>1.0.0</version> <!-- 請確保使用最新版本 -->
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
</dependency>

2.創建實體類和監聽器

(1)創建實體類

import cn.idev.excel.annotation.ExcelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Setter
@Getter
@ToString
public class User {
    @ExcelProperty("編號")
    private Integer id;
    @ExcelProperty("名字")
    private String name;
    @ExcelProperty("年齡")
    private Integer age;
}

(2)創建事件監聽器

FastExcel 是依靠事件監聽器實現 Excel 逐行讀取文件的,如果沒有這種逐行處理的機制和數據監聽器,在處理大文件時可能會導致內存溢出。而事件監聽器使得數據可以邊讀取邊處理,例如,可以直接將數據寫入數據庫或者進行其他業務邏輯處理,避免了大量數據在內存中的堆積。

import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.event.AnalysisEventListener;

import java.util.ArrayList;
import java.util.List;
public class BaseExcelListener<T> extends AnalysisEventListener<T> {
    // 用于存儲讀取到的Excel數據對象列表
    private List<T> dataList = new ArrayList<>();
    @Override
    public void invoke(T t, AnalysisContext analysisContext) {
        // 每讀取一行數據,就將其添加到dataList中
        dataList.add(t);
    }
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // 當所有數據讀取完成后,可以在這里進行一些后續操作,如打印讀取到的數據數量
        System.out.println("讀取完成,共讀取了 " + dataList.size() + " 條數據");
    }
    // 提供一個方法用于獲取存儲數據的列表
    public List<T> getDataList() {
        return dataList;
    }
}

3.實現寫入和讀取功能

(1)Excel寫入功能

// Excel寫入功能
@GetMapping("/download")
public void download(HttpServletResponse response) throws IOException {
    response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
    response.setCharacterEncoding("utf-8");
    String fileName = URLEncoder.encode("test", "UTF-8");
    response.setHeader("Content-disposition",
                       "attachment;filename*=utf-8''" + fileName + ".xlsx");
    // 寫入數據
    FastExcel.write(response.getOutputStream(), User.class)
    .sheet("模板")
    .doWrite(buildData());
}
// 創建測試數據
private List<User> buildData() {
    // 創建 User 測試數據
    User user1 = new User();
    user1.setId(1);
    user1.setName("張三");
    user1.setAge(18);
    User user2 = new User();
    user2.setId(2);
    user2.setName("李四");
    user2.setAge(19);
    return List.of(user1, user2);
}

以上代碼執行效果如下:

(2)Excel讀取功能

// Excel讀取功能
@PostMapping("/upload")
public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) {
    if (file.isEmpty()) {
        return ResponseEntity.badRequest().body("請選擇一個文件上傳!");
    }
    try {
        BaseExcelListener<User> baseExcelListener = new BaseExcelListener<>();
        FastExcel.read(file.getInputStream(), User.class,
                       baseExcelListener).sheet().doRead();
        // 得到讀取數據
        List<User> dataList = baseExcelListener.getDataList();
        System.out.println(dataList);
        return ResponseEntity.ok("文件上傳并處理成功!");
    } catch (IOException e) {
        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("文件處理失敗!");
    }
}

以上代碼執行效果如下:

EasyExcel 如何升級到FastExcel

1.修改依賴

將 EasyExcel 的依賴替換為 FastExcel 的依賴,如下:

<!-- easyexcel 依賴 -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>easyexcel</artifactId>
  <version>xxxx</version>
</dependency>

依賴替換為:

<dependency>
  <groupId>cn.idev.excel</groupId>
  <artifactId>fastexcel</artifactId>
  <version>1.0.0</version>
</dependency>

2.修改代碼

將 EasyExcel 的包名替換為 FastExcel 的包名,如下:

// 將 easyexcel 的包名替換為 FastExcel 的包名
import com.alibaba.excel.**;

替換為:

import cn.idev.excel.**;

Excel轉換為PDF

FastExcel 支持將 Excel 文件轉換為 PDF 文件,FastExcel 將 Excel 轉為Pdf 底層依賴于 Apache POI 和 itext-pdf。受限于 itext-pdf 的許可證,請確保您的使用符合 itext-pdf 的許可證,后續 FastExcel 將支持更多的 PDF 轉換功能替換 itext-pdf,實現代碼如下:

FastExcel.convertToPdf(new File("excelFile"),new File("pdfFile"),null,null);

小結

FastExcel 依然是原來的那個 EasyExcel,但又不完全是 EasyExcel,希望 FastExcel 越做越好。各位小伙伴們,一起體驗起來吧。

責任編輯:姜華 來源: 磊哥和Java
相關推薦

2009-08-01 09:06:35

UbuntuOneLinux開源操作系統

2009-03-09 15:12:39

XenServer安裝

2023-07-15 08:01:38

2010-11-22 10:31:17

Sencha touc

2011-05-30 15:12:10

App Invento 初體驗

2009-11-30 10:09:02

谷歌Chrome OS

2011-08-02 10:26:59

iOS 多線程 線程

2011-11-01 10:30:36

Node.js

2013-06-08 10:15:29

Outlook 201Outlook 201

2011-09-15 15:03:10

2010-12-13 11:39:39

2025-03-18 07:30:41

2017-09-05 05:55:24

AWS ES集群大數據

2011-09-05 10:20:21

Sencha ToucAPP

2013-05-28 10:22:03

2009-07-21 13:08:08

iBATIS DAO

2025-04-10 07:30:43

2023-07-17 08:34:03

RocketMQ消息初體驗

2011-06-07 17:35:39

iphone 多線程

2010-05-13 21:03:42

Office 2010
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷色在线播放 | 亚洲精品久久久久中文字幕欢迎你 | 国产精品久久久久久婷婷天堂 | 国产精品久久毛片av大全日韩 | 不卡一区 | 国产精品久久久久无码av | jizz在线看片| 精品一区二区三区在线观看国产 | 日本三级电影免费观看 | 日韩有码在线观看 | 欧美精品国产精品 | 一片毛片 | 男插女下体视频 | 亚洲人成人一区二区在线观看 | 秋霞精品| 免费亚洲成人 | 狠狠色网 | 久久久久久一区 | 日韩在线国产 | 麻豆久久久久 | 97国产精品视频 | 91免费观看视频 | 婷婷福利 | 成人免费av在线 | 欧美日韩在线精品 | 国产一区二区三区免费 | 午夜欧美一区二区三区在线播放 | 久草免费在线视频 | 一区二区国产精品 | 在线观看视频中文字幕 | 精品国产一区二区在线 | 一级毛片网 | 欧美精品在线免费观看 | 国产精品 欧美精品 | 在线观看av网站永久 | 日韩成人在线播放 | 女女百合av大片一区二区三区九县 | 爱草视频| 欧美久久久久久久 | 日韩亚洲视频 | 亚洲一区免费 |