FastExcel使用详解

news/2025/2/1 23:16:36/

文章目录

  • FastExcel使用详解
    • 一、引言
    • 二、环境准备与依赖引入
      • 1、Maven 依赖引入
      • 2、实体类定义
    • 三、核心操作:读写 Excel
      • 1、读取 Excel
        • 1.1 自定义监听器
        • 1.2 读取文件
      • 2、写入 Excel
        • 2.1 简单写入
        • 2.2 模板写入
    • 四、Spring Boot 集成示例
      • 1、文件上传(导入)
      • 2、文件下载(导出)
    • 五、总结

FastExcel使用详解

在这里插入图片描述

一、引言

FastExcel 是由原 EasyExcel 作者维护的高性能 Excel 处理库,专注于解决大规模数据读写时的内存溢出问题。它兼容 EasyExcel 的 API,同时新增了流式处理、读取指定行数、Excel 转 PDF 等功能,适用于企业级数据导入导出、报表生成等场景。本文将从环境配置、核心功能到实际应用示例,详细解析 FastExcel 的使用方法。


二、环境准备与依赖引入

1、Maven 依赖引入

pom.xml 中添加以下依赖:

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

2、实体类定义

通过 @ExcelProperty 注解实现 Excel 列与 Java 对象的映射:

@Data
public class User {@ExcelProperty("编号")private Integer id;@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;
}

说明:使用 @Data(Lombok 注解)自动生成 Getter/Setter,简化代码。


三、核心操作:读写 Excel

1、读取 Excel

FastExcel 通过 事件监听器 实现流式读取,避免内存溢出。

1.1 自定义监听器
public class UserReadListener implements ReadListener<User> {private List<User> dataList = new ArrayList<>();@Overridepublic void invoke(User user, AnalysisContext context) {dataList.add(user); // 逐行处理数据}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {System.out.println("共读取 " + dataList.size() + " 条数据");}
}
1.2 读取文件
String fileName = "users.xlsx";
FastExcel.read(fileName, User.class, new UserReadListener()).sheet().doRead();

2、写入 Excel

2.1 简单写入
List<User> users = new ArrayList<>();
users.add(new User(1, "张三", 25));
users.add(new User(2, "李四", 30));FastExcel.write("output.xlsx").sheet("用户列表").head(User.class).doWrite(users);
2.2 模板写入

若需复杂格式,可基于模板填充数据:

try (ExcelWriter writer = FastExcel.write("output.xlsx").withTemplate("template.xlsx").build()) {FillConfig fillConfig = FillConfig.builder().forceNewRow(true).build();writer.fill(users, fillConfig, writerSheet);
}

四、Spring Boot 集成示例

1、文件上传(导入)

@PostMapping("/upload")
public ResponseEntity<String> upload(@RequestParam("file") MultipartFile file) {try {UserReadListener listener = new UserReadListener();FastExcel.read(file.getInputStream(), User.class, listener).sheet().doRead();return ResponseEntity.ok("导入成功,数据量:" + listener.getDataList().size());} catch (IOException e) {return ResponseEntity.status(500).body("导入失败");}
}

2、文件下载(导出)

@GetMapping("/download")
public void download(HttpServletResponse response) throws IOException {response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setHeader("Content-Disposition", "attachment;filename=users.xlsx");List<User> users = userService.listAll(); // 假设从数据库获取数据FastExcel.write(response.getOutputStream(), User.class).sheet("用户数据").doWrite(users);
}

五、总结

FastExcel 凭借其 高性能流式处理简洁的 API,成为处理大规模 Excel 数据的首选工具。相比传统库(如 Apache POI),其内存占用更低,特别适合百万级数据的导入导出。

适用场景

  • 企业级数据报表生成
  • 批量数据导入数据库
  • 高并发环境下的 Excel 处理

版权声明:本博客内容为原创,转载请保留原文链接及作者信息。

参考文章

  • Spring Boot3集成FastExcel实现高效Excel操作 (附源码)
  • fastexcel读写Excel - CSDN博客

http://www.ppmy.cn/news/1568541.html

相关文章

YOLOv8:目标检测与实时应用的前沿探索

随着深度学习和计算机视觉技术的迅速发展&#xff0c;目标检测&#xff08;Object Detection&#xff09;一直是研究热点。YOLO&#xff08;You Only Look Once&#xff09;系列模型作为业界广受关注的目标检测框架&#xff0c;凭借其高效、实时的特点&#xff0c;一直迭代更新…

多模态论文笔记——VDT

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细解读多模态论文《VDT》&#xff0c;首次在视频扩散的生成模型中使用Transformer&#xff0c;这和后面的Sora架构最接近。 文章目录 论文摘要1 引言近期研究…

解锁罗技键盘新技能:轻松锁定功能键(罗技K580)

在使用罗技键盘的过程中&#xff0c;你是否曾因 F11、F12 功能键的默认设置与实际需求不符而感到困扰&#xff1f; 别担心&#xff0c;今天就为大家分享一个简单实用的小技巧 —— 锁定罗技键盘的 F11、F12 功能键&#xff0c;让你的操作更加得心应手&#xff01; 通常情况下…

【数据结构】_链表经典算法OJ:分割链表(力扣—中等)

目录 1. 题目描述及链接 2. 解题思路 2.1 思路1 2.2 思路2 2.3 思路3&#xff08;本题采取该解法&#xff09; 3. 题解程序 1. 题目描述及链接 题目链接&#xff1a;面试题 02.04. 分割链表 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 给你一个链表…

使用PyTorch实现逻辑回归:从训练到模型保存与加载

1. 引入必要的库 首先&#xff0c;需要引入必要的库。PyTorch用于构建和训练模型&#xff0c;pandas和numpy用于数据处理&#xff0c;matplotlib用于结果的可视化。 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoade…

DeepSeek R1与OpenAI o1深度对比

文章目录 引言技术原理DeepSeek R1OpenAI o1 性能表现官方数据推理任务知识密集型任务通用能力 价格对比应用场景科研与技术开发自然语言处理&#xff08;NLP&#xff09;企业智能化升级教育与培训数据分析与智能决策 部署与集成DeepSeek R1OpenAI o1 伦理考量DeepSeek R1OpenA…

实验十 数据库完整性实验

实验十 数据库完整性实验 一、实验目的 1、熟悉通过SQL对数据进行完整性控制。熟练掌握数据库三类完整性约束&#xff08;实体完整性、用户自定义完整性、参照完整性&#xff09; 2、了解SQL SERVER 的违反完整性处理措施。 3、了解主键&#xff08;PRIMARY KEY&#xff09;约…

Matrials studio 软件安装步骤(百度网盘链接)

软件简介&#xff1a; Materials Studio是一款材料模拟软件。帮助建立三维结构模型&#xff0c;并对各种晶体、无定型以及高分子材料的性质及相关过程进行深入的研究。 网盘链接&#xff1a; https://pan.baidu.com/s/1h2yuuH6RQixpuWveJP4KDA?pwd22o9 提取码:22o9 安装…