最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java使用FastExcel高效讀取和寫(xiě)入Excel

 更新時(shí)間:2025年11月05日 10:24:53   作者:智_永無(wú)止境  
FastExcel 是一個(gè) Java 庫(kù),旨在高效地讀取和寫(xiě)入 Excel 文件,它最初是 EasyExcel 的分叉版本,旨在提供增強(qiáng)的性能、持續(xù)維護(hù)和新功能,同時(shí)保持與原始 EasyExcel API 的兼容性,本文給大家介紹了Java如何使用FastExcel高效讀取和寫(xiě)入Excel,需要的朋友可以參考下

01 引言

FastExcel大家可能不熟悉,但是EasyExcel應(yīng)該都使用過(guò)吧?

FastExcelEasyExcel版本的延續(xù),自從阿里巴巴官方停止維護(hù)EasyExcelEasyExcel的作者繼續(xù)維護(hù)起來(lái),并持續(xù)改進(jìn)優(yōu)化,并更名為FastExcel。

02 簡(jiǎn)介

FastExcel 是一個(gè) Java 庫(kù),旨在高效地讀取和寫(xiě)入 Excel 文件。它最初是 EasyExcel 的分叉版本,旨在提供增強(qiáng)的性能、持續(xù)維護(hù)和新功能,同時(shí)保持與原始 EasyExcel API 的兼容性。這使其成為在 Java 應(yīng)用程序中處理 Excel 數(shù)據(jù)的強(qiáng)大的用戶友好的工具。

FastExcel 通過(guò)優(yōu)化內(nèi)存使用來(lái)優(yōu)先考慮高性能,特別是在處理大型數(shù)據(jù)集時(shí)。它通過(guò) SAX 解析機(jī)制實(shí)現(xiàn)這一點(diǎn),以流式方式處理基于 XML 的 Excel 文件(XLSX),而無(wú)需一次性將整個(gè)文件加載到內(nèi)存中。

官網(wǎng)地址:https://readmex.com/fast-excel/fastexcel/page-151366ada-2ea3-4451-aa3d-98ac90ce4f6e

Github地址:https://github.com/fast-excel/fastexcel

主要特性:

  • 高性能讀寫(xiě):FastExcel 專(zhuān)注于性能優(yōu)化,能夠高效處理大規(guī)模的 Excel 數(shù)據(jù)。相比一些傳統(tǒng)的 Excel 處理庫(kù),它能顯著降低內(nèi)存占用。
  • 簡(jiǎn)單易用:該庫(kù)提供了簡(jiǎn)潔直觀的 API,使得開(kāi)發(fā)者可以輕松集成到項(xiàng)目中,無(wú)論是簡(jiǎn)單的 Excel 操作還是復(fù)雜的數(shù)據(jù)處理都能快速上手。
  • 流式操作:FastExcel 支持流式讀取,將一次性加載大量數(shù)據(jù)的問(wèn)題降到最低。這種設(shè)計(jì)方式在處理數(shù)十萬(wàn)甚至上百萬(wàn)行的數(shù)據(jù)時(shí)尤為重要。

03 功能概要

業(yè)務(wù)項(xiàng)目中,我們經(jīng)常需要讀寫(xiě)Excel,如Excel的導(dǎo)入,導(dǎo)出。

3.1 Maven

<dependency>
    <groupId>cn.idev.excel</groupId>
    <artifactId>fastexcel</artifactId>
    <version>1.2.0</version> <!-- Or the latest version -->
</dependency>

3.2 模型類(lèi)

用來(lái)接收Excel數(shù)據(jù)的實(shí)體

@Data
public class Book {

    private String bookName;
    private String author;
    private BigDecimal price;
    private Date saleDate;
}

3.3 讀取Excel文件

API

案例:

@Test
void test01() throws FileNotFoundException {
    File file = ResourceUtils.getFile("classpath:file/demo.xls");
    List<Book> bookList = new ArrayList<>();
    FastExcel.read(file, Book.class, new ReadListener<Book>() {
        @Override
        public void invoke(Book book, AnalysisContext analysisContext) {
            System.out.println("解析數(shù)據(jù):" + JSON.toJSONString(book));
            bookList.add(book);
        }

        @Override
        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
            System.out.println("解析完所有數(shù)據(jù)....");
        }
    }).sheet().doRead();

    System.out.println("bookList:" + JSON.toJSONString(bookList));
}

執(zhí)行結(jié)果:

代碼解析:

read(File file, Class head, ReadListener readListener)

  • FastExcel擁有靜態(tài)方法read()
  • file:需要讀取的文件
  • head:需要將文件解析的對(duì)象,按照字段的順序和excel的澍勛解析,也可以通過(guò)@ExcelProperty指定索引位置
  • readListener:讀取每一條數(shù)據(jù)的監(jiān)聽(tīng)器,處理數(shù)據(jù)也是這里處理的

FastExcel.read(...).sheet().doRead()

  • sheet():默認(rèn)第一個(gè)sheet,也可以傳遞參數(shù)指定
  • doRead():開(kāi)始同步讀取數(shù)據(jù),也可以異步讀取數(shù)據(jù)doReadSync()

3.4 寫(xiě)入Excel文件

寫(xiě)入文件之前,我們需要定義模板類(lèi)的名稱(chēng),需要使用到@ExcelProperty

@Data
public class Book {

    @ExcelProperty(value = "書(shū)名")
    private String bookName;
    @ExcelProperty(value = "作者")
    private String author;
    @ExcelProperty(value = "價(jià)格")
    @NumberFormat("#,###.00")
    private BigDecimal price;
    @ExcelProperty(value = "上架時(shí)間")
    @DateTimeFormat("yyyy-MM-dd")
    private Date saleDate;
}

API:

案例:

@Test
void test02() {
    List<Book> bookList = new ArrayList<>();
    for (int i = 0; i < 5; i++) {
        Book item = new Book();
        item.setBookName("Java" + i);
        item.setAuthor("張三" + i);
        item.setPrice(new BigDecimal("2002.35"));
        item.setSaleDate(new Date());
        bookList.add(item);
    }
    FastExcel.write("writeDemo.xls", Book.class).sheet().sheetName("test").doWrite(bookList);
}

執(zhí)行結(jié)果:

代碼解析:

write(String pathName, Class head)

  • FastExcel擁有靜態(tài)方法write()
  • pathName:文件要生成的位置
  • head:模板類(lèi),這個(gè)生成Excel的關(guān)鍵

FastExcel.write(...).sheet().sheetName("test").doWrite(bookList)

  • sheet():寫(xiě)入sheet的位置,默認(rèn)第一個(gè)
  • sheetName("test"):自定義sheet的名稱(chēng)
  • doWrite():要寫(xiě)入的數(shù)據(jù)源

04 小結(jié)

FastExcel替我們省去了使用POI的繁瑣,使用起來(lái)只關(guān)系需要處理的數(shù)據(jù)即可,非常方便。EasyExcelFastExcel在使用上基本沒(méi)有什么區(qū)別,因?yàn)橥谕础?/p>

EasyExcel已經(jīng)停止維護(hù)了,你會(huì)去遷移到FastExcel上么?作者給出了幾個(gè)遷移優(yōu)勢(shì):

以上就是Java使用FastExcel高效讀取和寫(xiě)入Excel的詳細(xì)內(nèi)容,更多關(guān)于Java FastExcel讀取和寫(xiě)入Excel的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

盖州市| 石柱| 柳河县| 兰西县| 定南县| 通渭县| 吴旗县| 南宁市| 东台市| 米林县| 阳曲县| 石台县| 綦江县| 兴义市| 镇宁| 涞源县| 浦江县| 胶南市| 邛崃市| 遂宁市| 包头市| 丰原市| 全椒县| 南华县| 重庆市| 霞浦县| 密山市| 镇沅| 东丰县| 库车县| 沧州市| 洛隆县| 汤阴县| 阿拉善右旗| 曲阜市| 汪清县| 丹巴县| 上虞市| 汾阳市| 玛沁县| 张家界市|