精品秘无码一区二区三区老师-精品秘一区二三区免费雷安-精品蜜桃秘一区二区三区-精品蜜桃秘一区二区三区粉嫩-精品蜜桃一区二区三区-精品蜜臀国产aⅴ一区二区三区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

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

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

簡介

FastExcel是由原EasyExcel作者在阿里巴巴宣布停止維護(hù)EasyExcel之后推出的升級版框架。它繼承了EasyExcel的所有優(yōu)點(diǎn),并且在性能和功能上進(jìn)行了顯著的提升和創(chuàng)新。

FastExcel的特點(diǎn)

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

FastExcel使用方法詳解

創(chuàng)建實(shí)體類和監(jiān)聽器

  • 創(chuàng)建實(shí)體類

在使用FastExcel進(jìn)行Excel文件的讀寫操作之前,需要定義一個實(shí)體類,該類中的每個屬性對應(yīng)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;
}
  • 創(chuàng)建事件監(jiān)聽器

FastExcel通過事件監(jiān)聽器實(shí)現(xiàn)Excel文件的逐行讀取,這對于處理大文件尤為重要,因?yàn)樗梢员苊鈨?nèi)存溢出的問題。下面是一個事件監(jiān)聽器的示例,它在讀取每行數(shù)據(jù)時將數(shù)據(jù)添加到列表中,并在所有數(shù)據(jù)讀取完成后執(zhí)行一些操作。

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() + " 條數(shù)據(jù)");
    }

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

實(shí)現(xiàn)寫入和讀取功能

  • Excel寫入功能

以下是使用FastExcel進(jìn)行Excel寫入的示例代碼。首先,創(chuàng)建測試數(shù)據(jù),然后通過FastExcel.write方法將數(shù)據(jù)寫入到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");
    // 寫入數(shù)據(jù)
    FastExcel.write(response.getOutputStream(), User.class)
    .sheet("模板")
    .doWrite(buildData())
;
}

// 創(chuàng)建測試數(shù)據(jù)
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進(jìn)行Excel讀取的示例代碼。通過FastExcel.read方法讀取Excel文件,并使用之前創(chuàng)建的監(jiān)聽器來處理讀取到的數(shù)據(jù)。

// 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轉(zhuǎn)換為PDF

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

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

小結(jié)

FastExcel作為一個高效且易于使用的Excel處理工具,不僅繼承了EasyExcel的所有優(yōu)點(diǎn),還在此基礎(chǔ)上進(jìn)行了性能和功能的增強(qiáng)。

通過上述示例,我們可以看到FastExcel如何簡化Excel文件的讀寫操作,以及如何通過事件監(jiān)聽器實(shí)現(xiàn)流式處理,從而有效管理內(nèi)存使用。無論是企業(yè)數(shù)據(jù)導(dǎo)入導(dǎo)出還是個人項(xiàng)目開發(fā),F(xiàn)astExcel都能提供強(qiáng)大的支持。

FastExcel與EasyExcel的區(qū)別

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

結(jié)論

FastExcel作為一個輕量級但功能強(qiáng)大的Java庫,專為需要高性能和低內(nèi)存占用的Excel文件處理而設(shè)計(jì)。如果您的項(xiàng)目需要處理大規(guī)模的Excel數(shù)據(jù),F(xiàn)astExcel無疑是一個值得考慮的選擇。其流式處理和靈活的API使其成為處理Excel文件的理想工具。

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


END


閱讀原文:原文鏈接


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

主站蜘蛛池模板: 含羞草亚洲AV无码久久精品 | 疯狂做受XXXX高潮吃奶 | 不卡一卡二卡三乱码免费网站 | 中文无码热在线精品视频 | 欧美又粗又猛又爽又黄A片 欧美又大粗又黄又爽无码 欧美又大又粗毛片多喷水 欧美又大又粗又湿A片 | 麻豆果冻传媒精品国产苹果 | 成人18禁深夜福利网站app免费 | 综合欧美日韩一区二区国产网站 | 国产成人理在线观看视频 | 亚洲精品人妻 | 国产真实露脸乱子伦 | 欧美日韩激情无码专区 | 四虎国产精品永久在线 | 视频一区精品自拍 | 人成乱码一卡二卡三四卡无卡六卡 | 国产三级电影网站 | 国产91丝袜在线播放网站 | 最新亚洲人成网站在线观看 | 免费无码成人av在线播 | 亚洲女同精品中文字幕 | 日本不卡免费视频新二区 | 无码av中文一二三区 | 丁香婷婷综合五月综合色啪 | 国产成人久久综合777777麻豆 | 日韩精品免费一区二区夜夜嗨 | 91久久午夜无码 | 边吃奶边狠狠躁日韩A片 | 成人性生交大片免费 | 国产成人免费片在线观看 | 人妻不卡久久精品 | 亚洲一区二区欧美视频在线 | 成人国内精品视频在线观看 | 丝袜中出制服人妻美腿 | 91在线无码精品视频 | 日本一区二区在线播放 | 91精品人妻一区二区 | 国产熟妇精品高潮一区二区三区 | 无码人妻丰满熟妇奶水区码 | a级毛片免费观看网站 | 亚洲欧洲视频一区 | 卡通动漫页无码精品一区二区三区 |