人妻夜夜爽天天爽三区丁香花-人妻夜夜爽天天爽三-人妻夜夜爽天天爽欧美色院-人妻夜夜爽天天爽免费视频-人妻夜夜爽天天爽-人妻夜夜爽天天

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

FastExcel:超越 EasyExcel 的新一代 Excel 處理神器

admin
2025年1月18日 7:45 本文熱度 418

簡介

FastExcel是由原EasyExcel作者在阿里巴巴宣布停止維護EasyExcel之后推出的升級版框架。它繼承了EasyExcel的所有優點,并且在性能和功能上進行了顯著的提升和創新。

FastExcel的特點

  • 高性能讀寫: FastExcel專注于性能優化,能夠高效處理大規模的Excel數據,顯著降低內存占用。
  • 簡單易用: 提供了簡潔直觀的API,使得開發者可以輕松集成到項目中,無論是簡單的Excel操作還是復雜的數據處理都能快速上手。
  • 流式操作: 支持流式讀取,將一次性加載大量數據的問題降到最低,特別適合處理數十萬甚至上百萬行的數據。
  • 完全兼容: 完全兼容原EasyExcel的所有功能和特性,用戶可以無縫過渡。
  • 持續更新: FastExcel會持續更新,修復bug,優化性能,增加新功能。

FastExcel使用方法詳解

創建實體類和監聽器

  • 創建實體類

在使用FastExcel進行Excel文件的讀寫操作之前,需要定義一個實體類,該類中的每個屬性對應Excel中的一列。使用@ExcelProperty注解來指定列名。

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;
}
  • 創建事件監聽器

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<Textends AnalysisEventListener<T{
    private List<T> dataList = new ArrayList<>();

    @Override
    public void invoke(T t, AnalysisContext analysisContext) {
        dataList.add(t);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("讀取完成,共讀取了 " + dataList.size() + " 條數據");
    }

    public List<T> getDataList() {
        return dataList;
    }
}

實現寫入和讀取功能

  • Excel寫入功能

以下是使用FastExcel進行Excel寫入的示例代碼。首先,創建測試數據,然后通過FastExcel.write方法將數據寫入到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 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);
}
  • Excel讀取功能

以下是使用FastExcel進行Excel讀取的示例代碼。通過FastExcel.read方法讀取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.classbaseExcelListener).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("文件處理失敗!");
    }
}

Excel轉換為PDF

FastExcel還支持將Excel文件轉換為PDF文件,這一功能底層依賴于Apache POI和itext-pdf。請注意,使用itext-pdf時需要確保符合其許可證要求。

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

小結

FastExcel作為一個高效且易于使用的Excel處理工具,不僅繼承了EasyExcel的所有優點,還在此基礎上進行了性能和功能的增強。

通過上述示例,我們可以看到FastExcel如何簡化Excel文件的讀寫操作,以及如何通過事件監聽器實現流式處理,從而有效管理內存使用。無論是企業數據導入導出還是個人項目開發,FastExcel都能提供強大的支持。

FastExcel與EasyExcel的區別

  • 性能提升: FastExcel在性能上比EasyExcel更好,更穩定。
  • API一致性: FastExcel與EasyExcel的API完全一致,可以無縫切換。
  • 功能增加: FastExcel 1.0.0版本新增了讀取Excel指定行數和將Excel轉換為PDF的功能。

結論

FastExcel作為一個輕量級但功能強大的Java庫,專為需要高性能和低內存占用的Excel文件處理而設計。如果您的項目需要處理大規模的Excel數據,FastExcel無疑是一個值得考慮的選擇。其流式處理和靈活的API使其成為處理Excel文件的理想工具。

作者:拉滿buff搞代碼
來源:juejin.cn/post/7451871895753326626


END


閱讀原文:原文鏈接


該文章在 2025/1/18 11:09:48 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲色无码中文字幕日韩精品一区二区三区 | 日韩专区视频 | 国产成人无码精品久久久免费 | 另类欧美亚洲 | 好涨好爽好大视频免费 | 波多野结衣乱码无字幕 | 国产精品无码卡在线播放 | 亚洲一区二区三区四区五区六 | 高清日韩电影免费在线观看视频播放中文字幕 | 精品人妻无码视频中文字幕一 | 狠狠色丁香久久婷婷 | 国产剧情一卡二卡麻豆 | 国产一区二区在线免费观看 | 久久久久中文字幕 | 国产成人无码aⅴ片在线观看视频 | 真实乱子伦小说 | 久久精品人人做人人爽 | 国产欧美精品一区二区三区色综合 | 国产SUV精品一区二AV18 | 午夜成人影视神马 | 精品日韩欧美一区二区 | 国产成年女人特黄特色大片免费 | 日本牲交大片免费观看 | 精品人妻一区二区三区麻豆91 | 中文字幕国内精品一区二区 | 国产三级精品三级在线观看 | 久久久蜜桃精品中文字幕 | av无码精品一区二区三区四区 | 国产精品国产三级国产 | 成年人免费网站视频 | 国产大片一区 | 久久精品国产亚洲av麻豆毛 | 国产精品剧情一区二区在线观看 | 一区二区精品久久 | 99精品国产一区二区三区在线观看 | 国产成人精品亚洲男人的天堂 | 国产视频一区二区三区在线免费观看 | 国产a视频精品免费观看 | 久草在线草a免费线看 | 日韩激情综合一区二区详情介绍 | 亚洲中文字幕精品在线视频 |