EasyPOI复杂表格导入

easypoi基本使用-Excel数据的导入导出 w 阅读详情

多表头数据导入

方式一

导入的表格样式如下
在这里插入图片描述

导入表格实体类

package com.demo.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

import java.io.Serializable;

@Data
public class SerailNum implements Serializable {

    /**
     * 序号
     */
    @Excel(name = "序号")
    private String serialNum;
}

package com.demo.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

import java.io.Serializable;

@Data
public class BasicInfo implements Serializable {

    @Excel(name = "姓名")
    private String name;

    @Excel(name = "性别")
    private String gender;
}

package com.demo.entity;

import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import lombok.Data;

import java.io.Serializable;

@Data
public class UserBO implements Serializable {

    @ExcelEntity(name = "序号")
    private SerailNum serailNum;

    @ExcelEntity(name = "基本信息")
    private BasicInfo basicInfo;
}

文件导入代码


package com.easy.poi.demo.controller;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.collection.CollectionUtil;
import com.easy.poi.demo.entity.UserBO;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.Collections;
import java.util.List;

/**
 * 复杂表格导入
 */
@RestController
public class ExcelController {
    @PostMapping(value = "/excel/complex/import")
    public List<UserBO> excelComplexImport(@RequestParam("file") MultipartFile file) throws Exception {
        ImportParams params = new ImportParams();
        params.setTitleRows(1);//标题列占几行
        params.setHeadRows(1);//header列占几行
        // 字段真正值和列标题之间的距离 默认0行
        /**
         *表格真正有值的行数离表格的标题列还差一行,如果表格列下的第一行为表格的实际内容,则不需要
         *设置  params.setStartRows(1);
         */
        params.setStartRows(1);
        InputStream inputStream = file.getInputStream();
        List<UserBO> userBOList = ExcelImportUtil.importExcel(inputStream, UserBO.class, params);
        if (CollectionUtil.isEmpty(userBOList)) {
            return Collections.emptyList();
        }
        return userBOList;
    }
}

测试结果

在这里插入图片描述
在这里插入图片描述

方式二

导入表格实体类

package com.easy.poi.demo.entity;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.Data;

import java.io.Serializable;

@Data
public class UserBO2 implements Serializable {
    @Excel(name = "序号")
    private String serialNum;

    @Excel(name = "姓名")
    private String name;

    @Excel(name = "性别")
    private String gender;
}


文件导入代码

package com.easy.poi.demo.controller;

import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.hutool.core.collection.CollectionUtil;
import com.easy.poi.demo.entity.UserBO2;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;
import java.util.Collections;
import java.util.List;

@RestController
public class ExcelController2 {

    @PostMapping(value = "/excel/complex/import2")
    public List<UserBO2> excelComplexImport(@RequestParam("file") MultipartFile file) throws Exception {
        ImportParams params = new ImportParams();
        params.setTitleRows(1);//标题列占几行
        params.setHeadRows(1);//header列占几行
        // 字段真正值和列标题之间的距离 默认0行
        /**
         *表格真正有值的行数离表格的标题列还差一行,如果表格列下的第一行为表格的实际内容,则不需要
         *设置  params.setStartRows(1);
         */
        params.setStartRows(1);
        // 文件输入流读取数据
        InputStream inputStream = file.getInputStream();
        List<UserBO2> userBOList = ExcelImportUtil.importExcel(inputStream, UserBO2.class, params);
        if (CollectionUtil.isEmpty(userBOList)) {
            return Collections.emptyList();
        }
        return userBOList;
    }
}


测试结果

在这里插入图片描述
在这里插入图片描述

总结

方式一和方式二,不同之处在于导入表格实体的设计,方式一是通过@ExcelEntity来映射合并的表格列,方式二是直接通过 @Excel来映射要读取的表格列,然后在导入的时候,设置表格真正要读取的表格列和表格字段真正值从哪行读取

设置表格从哪行读取表格内容

通过ImportParams设置startRows
在这里插入图片描述
在这里插入图片描述

代码地址

https://gitee.com/BAIXUEQIAN/java-study/tree/develop/easypoi-demo

利用easypoi轻松搞定复杂多级表头Excel导入导出实战 本文详细介绍了如何利用Easypoi工具库高效处理复杂多级表头Excel的导入与导出。通过实战演示,从环境搭建、核心注解@Excel的配置(特别是groupName属性定义层级),到结合MySQL数据库完成数据导入和模板导出,提供了完整的解决方案和常见问题避坑指南,能显著提升开发效率。 阅读详情

相关推荐

开发笔记 | EasyPoi快速学习实现excel导入导出

easypoi学习笔记

qq_37630282的博客 8670

使用Easy-POI导入复杂表头的Excel报表(含源码级分析)

本文旨在解决使用Easy-POI导入复杂表头(导出)时,遇上的EXCEL文件中的字段无法正常映射到Bean的问题,官方的示例和其他的优快云文章基本上没有很详细的教程,于是自己写一个 这是需要导入的表结构: 这是结构中需要在ImportParams中声明的术语: 在导入的时候,必须通过ImportParams params = new ImportParams()对象设置表的基本结构,如果有标题,就要params.setTitleRows(1)设置忽略的行,标题占1行就设置1,占n行就设置n,这个很容易

cxlswh的博客 1万+

阿里EasyExcel让你彻底告别easypoi

为什么说EasyExcel可以让你告别easypoi呢?在说这个问题之前我们先来了解下easypoi easypoi easypoi功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 这是easypoi官方给出的定义,使用这个工具后发现在进行excel的导入导出时,的确很方便。特别是一些简单的excel 比如这种简单的.

码眼的博客 7149

easypoi导入复杂表头Excel

EasyPoi导入Excel

不积跬步无以至千里,不积小流无以成江河 4602

使用EasyPOI导出复杂的Word表格

在我们日常开发中常常有需求,需要以Word格式导出各种合同信息,收费凭证等问题。格式较为复杂(如下图)。我们该怎么解决呢?

Elegance never goes out of fashion 1万+

EasyPOI基于模版的复杂表头表格导出

EasyPOI模版导出

qq_46073180的博客 1609

Excel导入导出之easypoi工具之模板复杂表格导出

工作中难免会遇到一些复杂的表格导出需求,这样普通的Excel表格难免会无法满足我们的需要,easypoi就提供了模板导出的功能,以方便我们导出更加复杂的Excel表格,这篇文章就为大家介绍一下模板导出的方法。 假如给我们这种复杂的Excel文档,那么我们上一篇文章介绍的导出功能可能就无法满足了,这篇文章就指导大家一步一步解决这种复杂表格导出 easypoi官方文档:http://doc.wupaas.com/docs/easypoi/easypoi-1c0u6ksp2r091

Flyingntothesky的博客 9009

EasyPOI入门

EasyPOI是一个基于Apache POI的Java库,用于简化Excel文档的导入和导出操作。EasyPOI通过注解的方式,极大地减少了代码量和复杂度,使得Excel操作变得更加简单直观。本篇博客将介绍如何使用EasyPOI进行Excel文件的导入和导出操作。通过上述步骤,您可以在 Spring Boot 项目中轻松集成并使用 EasyPOI 来处理 Excel 文件。EasyPOI 提供了丰富的注解和简化的 API,使得 Excel 操作变得更加方便和高效。

Casual_Lei的博客 6229

easypoi导入excel,复杂表格建议使用easyexcel

easypoi导入excel

2302_76401622的博客 330

easypoi自定义导出表格(多级表头)

使用Map导出Excel表格,并设置多级表头,此方法可以动态导出表格

qq_67367416的博客 9138

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

头歌操作系统 课堂练习4.2:页式内存管理 答案 无解析

kercii的博客 1万+

EasyPOI:excel导入导出

EasyPOI:excel导入导出

大连赵哥的博客 926

CloudSat卫星数据高效下载与自动化处理指南

本文详细介绍了CloudSat卫星数据的高效下载与自动化处理方法,包括交互式图形界面和wget批量下载技巧,以及使用Python脚本实现自动化处理和数据质量控制。内容涵盖从数据准备到实战应用的完整流程,特别适合气象研究和气候建模领域的工作者提升工作效率。

weixin_28700411的博客 232

springboot集成easypoi实现excel导入导出

文章通过springboot集成easypoi实现基础的excel导入和导出。

qq_50867577的博客 2646

Vmware安装windowsServer2022版本

全网最详细的Vmware安装windowsServer2022版本

A乐神的博客 7004

Virbox Protector:全方位守护 Android 应用安全

在数字化浪潮中,Android 应用面临着诸多安全挑战,如破解、篡改、盗版、数据窃取和钓鱼欺诈等。为了应对这些复杂的安全问题,Virbox Protector 应运而生,为 Android 应用提供高强度的专业化安全保护,支持对 APK 和 AAB 文件的加固保护,并兼容 Google Play,助力应用顺利出海。

VBP_2025的博客 996

easypoi的双层表头导入的bug(使用groupName)

我这里用了三种颜色来标示,我说的应该能明白吧,那个groupName会从当前单元格开始,一直包容这之后的单元格,但他不会对同级的进行包容,例如m8(名称8)就是和“基本信息”处在同级。基本信息包含了m1~m7(名称1-名称7)。名称15就只包含了m2,m3(名称2,名称3)。名称16就包含了m4,m5,m6(名称4,名称5,名称6)@Excel(groupName=“”):用来区分当前单元格所属那个表格范围。

weixin_70934023的博客 581

Linux下Linpack测试GPU和CPU性能

前面的文章已经介绍了如何搭建Linpack环境:https://blog.youkuaiyun.com/liu_feng_zi_/article/details/107429720 接下来说明如何使用 一、编写运行脚本: 新建文件:run_linpack.sh,内容如下: export HPL_DIR =/root/LHC/Linpack/hpl-2.0_FERMI_v15 export MKL_NUM_THREADS=6 export OMP_NUM_THREADS=6 export MKL_DYNAMI.

liu_feng_zi_的专栏 4633

Excel和 Word简易工具类 EasyPoi_Excel

http://git.oschina.net/jueyue/easypoi org.jeecgframework easypoi-base 2.0.8 org.jeecgframework easypoi-web ...

Hi, Sun 213

宝塔面板添加站点及运营商SSL免费证书的申请与使用

本文详细介绍在宝塔面板下如何正确添加站点、配置站点,及在运营商如何申请免费SSL证书,将其配置到宝塔站点里。 给你的网站加一把锁,教你免费SSL证书申请,配置到自己的网站中。 环境:Ubuntu server 18 工具:宝塔控制面板 平台:阿里云 Web服务器:Nginx 宝塔:https://www.bt.cn/ 阿里云:https://www.aliyun.com/ 腾讯云:https://cloud.tencent.com/ 要求: 1.宝塔控制面板搭建完毕。 2掌握域名解析的原理。 3.了解ht

贺兰山长老 5056

【目标检测-YOLO】YOLOv5-v5.0-yolov5s网络架构详解(第一篇)

源码:GitHub - ultralytics/yolov5 at v5.0 由于YOLO v5 代码库在持续更新,如上图,有多个版本,每个版本的网络结构不尽相同。以下内容以 v5.0 为准,网络结构选用 yolov5s。 为了方便画图和理解网络结构,选用可视化工具:Netron 网页版进行可视化, 然后使用PPT作图。 在Releases · ultralytics/yolov5 · GitHub找到 v5.0中的Assets 中的yolov5s.pt并下载该权重。 下图为直接......

博观约取,厚积薄发 2万+

easypoi以最简单的方式实现多级表头导入导出

导出效果图: 数据导入效果图: 存入mysql库效果图: 效果也看到了,基本能满足所需要求,这种复杂的表头都是自定义的,根据模板直接使用,特别容易上手。 1,导入所需依赖 <!--导入导出--> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId>

qq_45752401的博客 1万+

Oracle EBS Interface/API(29) - AP发票API

续上编文章《Oracle EBS Interface/API(28) - 客制化开发AP付款API》背景,介绍如调用官方提供标准AP发票API调用 用户界面 Invoices(Payables Manager->Invoices->Entry->Invoices) Open Interface Invoices(Payables Manager->Invoices->Entry->Open Interface Invoices) 快速参考 参考点 内容.

陈显平的专栏-Oracle EBS 1150

EasyPOI 操作Excel 实战总结

EasyPOI 学习总结

北执南念的博客 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java 使用easypoi模板导出复杂表格

使用easypoi模板导出Excel

weixin_68575201的博客 2761

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

使用EasyPoi完成复杂一对多excel表格导出功能

文章目录业务需求需求难点通过 EasyPoi 实现需求具体实现 业务需求 从一个简单的仓库业务说起,仓库业务,会有进库记录,会有出库记录,会有库存,客户的需求就是需要一个库存盘点单,盘点单通俗来讲:将库存中每个商品的出入库记录都统计出来,看看每个商品出过多少货物,入过多少货物,本月库存多少,上月库存多少。 需求难点 一个货物会出过多次货物,入过多次货物,导出的 excel 就要做成 一对多 格式的导出 简单举例: 啤酒:入库2次,出库3次,最终体现在 excel 中效果如下图: 通过 EasyPoi 实现

永远年轻 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: github连不上
下一篇: EasyPoi表格导入添加校验
迷失的小鹿
博客等级 码龄8年 1万+粉丝 199原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值