当前位置: 首页 > article >正文

FastExcel的使用

前言
FastExcel 是一款基于 Java 的开源库,旨在提供快速、简洁且能解决大文件内存溢出问题的 Excel 处理工具。它兼容 EasyExcel,提供性能优化、bug 修复,并新增了如读取指定行数和将 Excel 转换为 PDF 的功能。

FastExcel 的主要功能

  • 高性能读写:FastExcel 专注于性能优化,能高效处理大规模 Excel 数据,显著降低内存占用。
  • 简单易用:提供简洁直观的 API,易于集成和使用。
  • 流式操作:支持流式读取,减少一次性加载大量数据的问题。
  • 读取指定行数:可以根据需求,只读取感兴趣的部分数据,提高数据处理效率。
  • Excel 转换为 PDF:支持直接将 Excel 文件转换为 PDF,满足多样化的文档输出需求。

FastExcel 的技术原理

  • 内存优化:基于流式读取技术,不需要一次性将整个 Excel 文件加载到内存中,逐行或逐块读取数据。
  • 事件驱动模型:基于实现 ReadListener 接口处理读取操作。当读取到数据时,会触发接口中的方法,如 invoke 方法,支持开发者对每行数据进行即时处理。
  • 注解映射:用注解将 Excel 文件中的列与 Java 对象的属性进行映射。开发者能轻松地将 Excel 数据转换为 Java 对象,同时也支持反向操作,将 Java 对象写入 Excel。

代码结构如图所示

读取 Excel 文件

package cn.itcast.hotel.excel;

import cn.idev.excel.FastExcel;
import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.read.listener.ReadListener;
import cn.idev.excel.support.ExcelTypeEnum;
import com.alibaba.fastjson.JSON;

/**
 * 实现 ReadListener 接口,设置读取数据的操作
 */
public class ReadExcelDataListener implements ReadListener<DemoData> {

    @Override
    public void invoke(DemoData demoData, AnalysisContext analysisContext) {
        System.out.println("解析到一条数据" + JSON.toJSONString(demoData));
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("所有数据解析完成!");
    }

    public static void main(String[] args) {
        String fileName = "E:\\tools\\es\\hotel-admin\\src\\main\\resources\\excel\\demo.xlsx";
        System.out.println("File path: " + fileName);
        FastExcel.read(fileName, DemoData.class, new ReadExcelDataListener()).sheet().doRead();
    }
}

创建 /生成 Excel 文件

package cn.itcast.hotel.excel;

import cn.idev.excel.FastExcel;

import java.util.ArrayList;
import java.util.List;

public class WriteExcelDataListener {
    static List<DemoData> list = new ArrayList<>();

    public static List<DemoData> genData(int num) {
        for (int i = 0; i < num; i++) {
            DemoData demoData = new DemoData();
            demoData.setDate(202401 + "" + i);
            demoData.setDoubleData("日期" + i);
            demoData.setTitle("标题:" + i);
            list.add(demoData);
        }
        return list;
    }

    public static void main(String[] args) {
        List<DemoData> demoData = genData(10);
        String fileName = "E:\\tools\\es\\hotel-admin\\src\\main\\resources\\excel\\demo.xlsx";
        FastExcel.write(fileName, DemoData.class).sheet().doWrite(demoData);
    }
}

好了 至此        FastExcel的使用         点点关注不迷路 老铁们!!!!!


http://www.kler.cn/a/519309.html

相关文章:

  • 数据结构基础之《(15)—排序算法小结》
  • mysql 学习6 DML语句,对数据库中的表进行 增 删 改 操作
  • Zookeeper(28)Zookeeper的线性化写入和顺序一致性读是什么?
  • 政安晨的AI大模型训练实践三:熟悉一下LF训练模型的WebUI
  • ansible自动化运维实战--script、unarchive和shell模块(6)
  • 基于Docker的Spark分布式集群
  • STM32项目分享:智能语音台灯
  • 视频网站服务器为什么需要使用负载均衡?
  • Lsky-Pro在线图片搭建教程(Docker部署方式)
  • 系统思考—动态问题分析
  • AF3 AtomAttentionDecoder类源码解读
  • 【Wordpress网站制作】切换语言的问题
  • 汇编基础语法及其示例
  • kotlin内联函数——runCatching
  • 【2024年华为OD机试】(A卷,200分)- Excel单元格数值统计 (JavaScriptJava PythonC/C++)
  • TDengine 做 Google Looker Studio 数据源
  • 国内优秀的FPGA设计公司主要分布在哪些城市?
  • 《陶陶摘苹果(升级版)》
  • XML实体注入漏洞攻与防
  • 0基础跟德姆(dom)一起学AI 自然语言处理22-fasttext文本分类
  • JavaScript(8)-函数
  • PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)
  • 二叉树的深度
  • Day 18 卡玛笔记
  • switch组件的功能与用法
  • CDN、源站与边缘网络