EasyExcel(读取操作和填充操作)

news2025/1/4 1:42:06

文章目录

    • 1.准备Read.xlsx(具有两个sheet)
    • 2.读取第一个sheet中的数据
        • 1.模板
        • 2.方法
        • 3.结果
    • 3.读取所有sheet中的数据
        • 1.模板
        • 2.方法
        • 3.结果
  • EasyExcel填充
    • 1.简单填充
        • 1.准备 Fill01.xlsx
        • 2.无模版
        • 3.方法
        • 4.结果
    • 2.列表填充
        • 1.准备 Fill02.xlsx
        • 2.模板
        • 3.方法
        • 4.结果
    • 3.组合填充
        • 1.准备 Fill03.xlsx
        • 2.模板
        • 3.方法
        • 4.结果
    • 4.水平填充
        • 1.准备 Fill04.xlsx
        • 2.模板
        • 3.方法
        • 4.结果

1.准备Read.xlsx(具有两个sheet)

CleanShot 2024-10-30 at 16.18.36@2x

2.读取第一个sheet中的数据

1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class DemoData {
    // 根据Excel中指定列名或列的索引读取
    @ExcelProperty(value = "字符串标题")
    private String name;
    @ExcelProperty(value = "日期标题")
    private Date hireDate;
    @ExcelProperty(value = "数字标题")
    private Double salary;
}
2.方法
/**
 * 读取第一个sheet中的数据
 */
@Test
public void testRead01() {
    // 读取文件路径
    String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
    // 存储解析的数据
    List<DemoData> demoDataArrayList = new ArrayList<>();
    // 1.创建read
    ExcelReader excelReader = EasyExcel.read(fileName)
            .build();
    // 2.创建sheet
    ReadSheet sheetOne = EasyExcel.readSheet(0)
            .head(DemoData.class)
            .registerReadListener(new AnalysisEventListener<DemoData>() {
                @Override
                public void invoke(DemoData demoData, AnalysisContext analysisContext) {
                    demoDataArrayList.add(demoData);
                }

                @Override
                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                    System.out.println("解析完成一个sheet...");
                }
            })
            .build();
    // 参数为可变参数,可以读取多个sheet
    excelReader.read(sheetOne);
    // 必须关闭流,否则会出现内存泄漏
    excelReader.finish();
    // 输出所有解析的数据
    System.out.println("所有解析的数据为:");
    demoDataArrayList.forEach(System.out::println);
}
3.结果

CleanShot 2024-10-30 at 16.28.03@2x

3.读取所有sheet中的数据

1.模板
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
public static class DemoData {
    // 根据Excel中指定列名或列的索引读取
    @ExcelProperty(value = "字符串标题")
    private String name;
    @ExcelProperty(value = "日期标题")
    private Date hireDate;
    @ExcelProperty(value = "数字标题")
    private Double salary;
}
2.方法
/**
 * 读取所有sheet中的数据
 */
@Test
public void testRead02() {
    // 读取文件路径
    String fileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Read.xlsx";
    // 存储解析的数据
    List<DemoData> demoDataArrayList = new ArrayList<>();
    // 直接使用EasyExcel读取excel
    ExcelReader excelReader = EasyExcel.read(fileName, DemoData.class, new AnalysisEventListener<DemoData>() {
        // 每解析一行数据,该方法会被调用一次
        @Override
        public void invoke(DemoData demoData, AnalysisContext analysisContext) {
            demoDataArrayList.add(demoData);
        }

        // 解析完成一个sheet后被调用
        @Override
        public void doAfterAllAnalysed(AnalysisContext analysisContext) {
            System.out.println("解析完成一个sheet...");
            // 可以将解析的数据保存到数据库
        }
    }).build();
    excelReader.readAll(); // 读所有sheet
    // 必须关闭流,否则会出现内存泄漏
    excelReader.finish();
    // 输出所有解析的数据
    System.out.println("所有解析的数据为:");
    demoDataArrayList.forEach(System.out::println);
}
3.结果

CleanShot 2024-10-30 at 16.27.38@2x

EasyExcel填充

1.简单填充

1.准备 Fill01.xlsx

CleanShot 2024-10-30 at 16.32.41@2x

2.无模版
3.方法
/**
 * 简单填充
 */
@Test
public void testFill01() {
    // 选择要填充的模板
    String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01.xlsx";
    // 选择填充后的文件
    String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill01_end.xlsx";
    // 1.创建write
    ExcelWriter excelWriter = EasyExcel.write(filledFileName)
            .withTemplate(templateFileName)
            .build();
    // 2.创建sheet
    WriteSheet writeSheet = EasyExcel.writerSheet()
            .sheetNo(0)
            .build();
    // 3.构建数据
    Map<String, Object> data = new HashMap<>();
    data.put("name", "张三");
    data.put("age", 20);
    data.put("birthday", new Date());
    // 4.填充数据
    excelWriter.fill(data, writeSheet);
    // 5.关闭流
    excelWriter.finish();
}
4.结果

CleanShot 2024-10-30 at 16.46.44@2x

2.列表填充

1.准备 Fill02.xlsx

2.模板
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Fill02 {
        private String name;
        private Double number;
    }
3.方法
    /**
     * 列表填充
     */
    @Test
    public void testFill02() {
        // 选择要填充的模板
        String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02.xlsx";
        // 选择填充后的文件
        String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill02_end.xlsx";
        // 1.创建write
        ExcelWriter excelWriter = EasyExcel.write(filledFileName)
                .withTemplate(templateFileName)
                .build();
        // 2.创建sheet
        WriteSheet writeSheet = EasyExcel.writerSheet()
                .sheetNo(0)
                .build();
        // 3.构建数据
        List<Fill02> data = new ArrayList<>();
        data.add(Fill02.builder()
                .name("张三")
                .number(100.0)
                .build());
        data.add(Fill02.builder()
                .name("李四")
                .number(200.0)
                .build());
        data.add(Fill02.builder()
                .name("王五")
                .number(300.0)
                .build());
        // 4.填充数据
        excelWriter.fill(data, writeSheet);
        // 5.关闭流
        excelWriter.finish();
    }
4.结果

CleanShot 2024-10-30 at 17.01.37@2x

3.组合填充

1.准备 Fill03.xlsx

CleanShot 2024-10-30 at 17.26.36@2x

2.模板
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Fill03 {
        private String name;
        private Integer age;
    }
3.方法
/**
 * 组合填充
 */
@Test
public void testFill03() {
    // 选择要填充的模板
    String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03.xlsx";
    // 选择填充后的文件
    String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill03_end.xlsx";

    // 1.创建write
    ExcelWriter excelWriter = EasyExcel.write(filledFileName)
            .withTemplate(templateFileName)
            .build();
    // 2.创建sheet
    WriteSheet writeSheet = EasyExcel.writerSheet()
            .sheetNo(0)
            .build();
    // 3.构建数据
    // 3.1 构建数据1
    Map<String, Object> data1 = new HashMap<>();
    data1.put("time", new Date());
    data1.put("num", 2);
    // 3.2 构建数据2
    List<Fill03> data2 = new ArrayList<>();
    data2.add(Fill03.builder().name("张三").age(20).build());
    data2.add(Fill03.builder().name("李四").age(21).build());
    // 填充配置,换行填充(混合填充必备配置)
    FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
    // 4.填充数据
    excelWriter.fill(data1, fillConfig, writeSheet);
    excelWriter.fill(data2, fillConfig, writeSheet);
    // 5.关闭流
    excelWriter.finish();
}
4.结果

CleanShot 2024-10-30 at 17.33.55@2x

4.水平填充

1.准备 Fill04.xlsx

2.模板
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public static class Fill04 {
    private String name;
    private Integer age;
}
3.方法
    /**
     * 水平填充
     */
    @Test
    public void testFill04() {
        // 选择要填充的模板
        String templateFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04.xlsx";
        // 选择填充后的文件
        String filledFileName = "/Users/sunxiansheng/IdeaProjects/demo/easyexcel-demo/src/main/resources/Fill04_end.xlsx";
        // 1.创建write
        ExcelWriter excelWriter = EasyExcel.write(filledFileName)
                .withTemplate(templateFileName)
                .build();
        // 2.创建sheet
        WriteSheet writeSheet = EasyExcel.writerSheet()
                .sheetNo(0)
                .build();
        // 3.构建数据
        List<Fill04> data = new ArrayList<>();
        data.add(Fill04.builder().name("张三").age(20).build());
        data.add(Fill04.builder().name("李四").age(21).build());
        // 填充配置,水平填充
        FillConfig fillConfig = FillConfig.builder().direction(WriteDirectionEnum.HORIZONTAL).build();
        // 4.填充数据
        excelWriter.fill(data, fillConfig, writeSheet);
        // 5.关闭流
        excelWriter.finish();
    }
4.结果

CleanShot 2024-10-30 at 17.34.12@2x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2268914.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OCR实践-问卷表格统计

前言 书接上文 OCR实践—PaddleOCROCR实践-Table-Transformer 本项目代码已开源 放在 Github上&#xff0c;欢迎参考使用&#xff0c;Star https://github.com/caibucai22/TableAnalysisTool 主要功能说明&#xff1a;对手动拍照的问卷图片进行统计分数&#xff08;对应分数…

BOE(京东方)“向新2025”年终媒体智享会落地深圳

12月27日,BOE(京东方)“向新 2025”年终媒体智享会的收官之站在创新之都深圳圆满举行,为这场为期两周、横跨三地的年度科技盛会画上了完美句号。活动期间,全面回顾了 BOE(京东方)2024年在多个关键领域取得的卓越成绩,深入剖析其在六大维度构建的“向新”发展格局,精彩呈现了以“…

Kinova在开源家庭服务机器人TidyBot++研究里大展身手

在科技日新月异的今天&#xff0c;机器人技术在家庭场景中的应用逐渐成为现实&#xff0c;改变着我们的生活方式。今天&#xff0c;我们将深入探讨一篇关于家用机器人研究的论文&#xff0c;剖析其中的创新成果&#xff0c; 论文引用链接&#xff1a;http://tidybot2.github.i…

LCE软机器人登场!热场光控下的多模态运动传奇?

大家好&#xff01;今天来了解一项液晶弹性体&#xff08;LCE&#xff09;软机器人研究——《Multimodal Autonomous Locomotion of Liquid Crystal Elastomer Soft Robot》发表于《Advanced Science》。在机器人技术不断演进的进程中&#xff0c;软机器人虽有潜力但面临诸多挑…

爆改RagFlow

爆改RagFlow 一、Rag理论概述二、Ragflow解析参数说明三、♥ RagFlow源码解析核心代码流程梳理1、OCR识别2、版面分析3、parser功能3.1 PdfParser3.1.1 首先&#xff0c;初始化3.1.2 **pdf转图片** [来自工业界的知识库 RAG 服务(二)&#xff0c;RagFlow 源码全流程深度解析](h…

centos7 免安装mysql5.7及配置(支持多个mysql)

一&#xff09; 下载免安装包&#xff1a; mysql下载地址: https://dev.mysql.com/downloads/mysql/下载时&#xff0c;选择以前5.7版本&#xff1a; image 下载第一个TAR压缩包&#xff1a; image 二&#xff09; 定义安装路径并解压安装包 1、假设需要把MySQL放到 /usr/local…

潇洒郎:部署Dify, 安装Ollama,Ollama下载模型,Dify配置模型

Ollama 1、安装ollama Windows版本下载&#xff1a;2024WindowsOllama最新0.5.4版本资源-CSDN文库, 下载速度超快&#xff0c;官网太慢了 双击安装&#xff0c;安装成功后&#xff0c;托盘区有Ollama图标 右键View logs打开目录 C:\Users\Administrator\AppData\Local\Oll…

Axure10

如果还是不行就将字体图标安装在控制面板–字体下 打开原型了之后&#xff0c;icon没有 一定要将字体库放到–》控制面板\外观和个性化\字体 里面

一维、线性卡尔曼滤波的例程(MATLAB)

这段 MATLAB 代码实现了一维线性卡尔曼滤波器的基本功能,用于估计在存在噪声的情况下目标状态的真实值 文章目录 一维线性卡尔曼滤波代码运行代码介绍1. **初始化部分**2. **数据生成**3. **卡尔曼滤波器实现**4. **结果可视化**5. **统计输出**源代码总结一维线性卡尔曼滤波 …

虚拟化 | Proxmox VE 8.x 开源的虚拟化平台快速上手指南

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x00 简介说明 前言简述 描述:作为一个爱折腾的IT打工佬,时刻以学习各类新技术新知识为目标,这不正好有一台部署了VMware vSphere ESXi 虚拟化环境的服务器,由于正好安装其系统的磁盘有坏道,经常导致使用 ESXi 异…

在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 CUDA 的记录

#记录工作 以下是基于CUDA官网给定命令在 Windows 11 下的 WSL - Ubuntu 24.04 中安装 CUDA 的记录&#xff1a; 一、准备工作 确保你的 Windows 11 系统已经成功启用 WSL 功能&#xff0c;并且已经安装了 Ubuntu 24.04 操作系统。同时&#xff0c;确保系统处于联网状态&#…

《机器学习》——KNN算法

文章目录 KNN算法简介KNN算法——sklearnsklearn是什么&#xff1f;sklearn 安装sklearn 用法 KNN算法 ——距离公式KNN算法——实例分类问题完整代码——分类问题 回归问题完整代码 ——回归问题 KNN算法简介 一、KNN介绍 全称是k-nearest neighbors&#xff0c;通过寻找k个距…

《向量数据库指南》——Milvus Cloud 2.5:Sparse-BM25引领全文检索新时代

Milvus Cloud BM25:重塑全文检索的未来 在最新的Milvus Cloud 2.5版本中,我们自豪地引入了“全新”的全文检索能力,这一创新不仅巩固了Milvus Cloud在向量数据库领域的领先地位,更为用户提供了前所未有的灵活性和效率。作为大禹智库的向量数据库高级研究员,以及《向量数据…

HTML——23. 锚点和空链接二

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>其它页面锚链接</title></head><body><!--跳转到其它页面具体位置锚链接--><!--1.目标页面具体位置要设置锚点--><!--2.用a标签中的href属…

【Devops】什么是Devops?(Development+Operations)和运维的区别?

DevOps&#xff08;Development Operations&#xff09;是一种将开发&#xff08;Development&#xff09;和运维&#xff08;Operations&#xff09;团队结合在一起的文化和实践&#xff0c;目的是通过自动化、协作和持续反馈来加快软件的开发、部署和运维的周期&#xff0c;…

kubernetes Gateway API-1-部署和基础配置

文章目录 1 部署2 最简单的 Gateway3 基于主机名和请求头4 重定向 Redirects4.1 HTTP-to-HTTPS 重定向4.2 路径重定向4.2.1 ReplaceFullPath 替换完整路径4.2.2 ReplacePrefixMatch 替换路径前缀5 重写 Rewrites5.1 重写 主机名5.2 重写 路径5.2.1 重新完整路径5.2.1 重新部分路…

VUE echarts 教程二 折线堆叠图

VUE echarts 教程一 折线图 import * as echarts from echarts;var chartDom document.getElementById(main); var myChart echarts.init(chartDom); var option {title: {text: Stacked Line},tooltip: {trigger: axis},legend: {data: [Email, Union Ads, Video Ads, Dir…

linux安装nginxs报错:openssl not found

系统&#xff1a; linux 版本&#xff1a;centOS7 nginx版本&#xff1a;nginx-1.20.2 linux安装nginx时 执行下面命令时报错&#xff1a; ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

项目基本配置

总说 本节主要记录修改配置文件、连接mysql数据库、git连接 一、配置文件的修改 1.1 配置pom.xml 由于我们要连接mysql数据库&#xff0c;需要在pom.xml中添加相关依赖 这里给出一个网站&#xff0c;可以找到各种依赖Maven Repository: Search/Browse/Explore 添加一个my…

一个最简单的ios程序(object_c)的编写

前言 如何在苹果系统MacOS创建一个简单的ios&#xff08;iphone&#xff09;程序&#xff0c;貌似非常的简单。但是&#xff0c;作为习惯了Windows开发的程序员来说&#xff0c;有时候还觉得有点麻烦&#xff0c;至少开始有点很不习惯。 本博文试着把这个过程展现一下&#xff…