EasyPOI复杂表格导入

EasyPOI复杂表格导入

  • 多表头数据导入
    • 方式一
      • 导入表格实体类
      • 文件导入代码
      • 测试结果
    • 方式二
      • 导入表格实体类
      • 文件导入代码
      • 测试结果
    • 总结
  • 设置表格从哪行读取表格内容

多表头数据导入

方式一

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

导入表格实体类

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.demo;import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.alibaba.fastjson2.JSON;
import com.demo.entity.UserBO;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;@SpringBootTest
public class UserTest {@Testpublic void testImport() throws Exception {ImportParams params = new ImportParams();params.setTitleRows(1);//标题列占几行params.setHeadRows(1);//header列占几行// 字段真正值和列标题之间的距离 默认0行/***表格真正有值的行数离表格的标题列还差一行,如果表格列下的第一行为表格的实际内容,则不需要*设置  params.setStartRows(1);*/params.setStartRows(1);// 文件输入流读取数据InputStream inputStream = new FileInputStream("C:\\Users\\16837\\Desktop\\test\\social.xls");List<UserBO> userBOList= ExcelImportUtil.importExcel(inputStream,UserBO.class,params);System.out.println("导入数据");System.out.println(userBOList);}
}

测试结果

控制台输出
在这里插入图片描述

方式二

导入表格实体类

package com.demo.entity;import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelEntity;
import lombok.Data;import java.io.Serializable;@Data
public class UserBO implements Serializable {@Excel(name = "序号")private String serialNum;@Excel(name = "姓名")private String name;@Excel(name = "性别")private String gender;
}

文件导入代码

package com.demo;import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.alibaba.fastjson2.JSON;
import com.demo.entity.UserBO;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;@SpringBootTest
public class UserTest {@Testpublic void testImport() throws Exception {ImportParams params = new ImportParams();params.setTitleRows(1);//标题列占几行params.setHeadRows(1);//header列占几行// 字段真正值和列标题之间的距离 默认0行/***表格真正有值的行数离表格的标题列还差一行,如果表格列下的第一行为表格的实际内容,则不需要*设置  params.setStartRows(1);*/params.setStartRows(1);// 文件输入流读取数据InputStream inputStream = new FileInputStream("C:\\Users\\16837\\Desktop\\test\\social.xls");List<UserBO> userBOList= ExcelImportUtil.importExcel(inputStream,UserBO.class,params);System.out.println("导入数据");System.out.println(userBOList);}
}

测试结果

在这里插入图片描述

总结

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

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

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

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

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

相关文章

基于令牌桶算法对高并发接口的优化

业务背景 项目中有一个抽奖接口&#xff0c;此接口需要处理高并发问题以及使用脚本作弊的问题。 本文主要探讨如何最大程度地减少脚本作弊行为对抽奖业务的影响。 设计思路 如何减少脚本作弊行为对抽奖业务的影响 使用令牌桶算法&#xff0c;对频率过高的用户请求进行拦截 …

pdffactory pro 8注册码序列号下载 附教程

PdfFactory Pro可以说是一款行业专业且技术领先的的PDF虚拟打印机软件。其不仅占用系统内存小巧&#xff0c;功能强大&#xff0c;可支持用户无需使用Acrobat来创建Adobe PDF即可以进行PDF组件的创建和打印。同时&#xff0c;现在全新的PdfFactory Pro 8也正式上线来袭&#xf…

(源码+部署+讲解)基于Spring Boot + Vue编程学习平台的设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31f;…

Hadoop简介

Hadoop 1、 Hadoop的介绍 Hadoop最早起源于Nutch。Nutch的设计目标是构建一个大型的全网搜索引擎&#xff0c;包括网页抓取、索引、查询等功能&#xff0c;但随着抓取网页数量的增加&#xff0c;遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题。2003年、20…

【数据结构】考研真题攻克与重点知识点剖析 - 第 7 篇:查找

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

开源铱塔切换MySQL数据库启动报异常

1.错误日志&#xff1a; 铱塔切换数据库配置为MySQL之后&#xff0c;启动后报错如下&#xff1a; SqlExceptionHelper - Table iotkit.task_info doesnt exist SqlExceptionHelper - Table iotkit.rule_info doesnt exist SqlExceptionHelper - Table iotkit.device_info does…

(WSI分类)WSI分类文献小综述 2024

2024的WSI分类。 Multiple Instance Learning Framework with Masked Hard Instance Mining for Whole Slide Image Classification &#xff08;ICCV2024&#xff09; 由于阳性组织只占 Gi- gapixel WSI 的一小部分&#xff0c;因此现有的 MIL 方法直观上侧重于通过注意力机…

Redis的常见命令

单线程&#xff1a;每个命令具备原子性 低延迟&#xff0c;速度快&#xff08;基于内存、IO多路复用、良好的编码&#xff09; 支持数据持久化 支持主从集群、分片集群 支持多语言客户端 2.Redis数据库介绍 Redis是一个key-value的数据库&#xff0c;key一般是String类型…

(源码+部署+讲解)基于Spring Boot + Vue的车位租赁系统设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb; 精彩专栏 推荐订阅&#x1f447;&#x1f3fb; 2024年Java精品实战案例《100套》 &#x1f345;文末获取源码联系&#x1f345; &#x1f31f;…

Apache Incubator Answer 本地开发部署

文章目录 简介Github文档插件部署 Answer开发环境编译项目初始化项目运行项目 简介 一款适合任何团队的问答平台软件。 Apache Incubator Answer是一个开源项目&#xff0c;它是一个用于构建和部署问答系统的框架。该项目是Apache软件基金会的孵化器项目&#xff0c;提供一个…

Nginx流媒体服务器RTMP直播同步录像

目录 一、环境 1、以下见往期文章 2、ffmpeg支持 二、建立录像路径

vscode 关键字记录

vscode 关键字记录&#xff1a; ${workspaceFolder}&#xff1a;当前工作区&#xff08;Workspace&#xff09;的根目录路径。${file}&#xff1a;当前打开文件的路径。如a/b/c/test.cpp。${fileDirname}&#xff1a;当前打开文件的目录路径。比如文件 test.cpp 位于 a/b/c&am…

自动驾驶中的传感器融合算法

目录 引言 一、传感器融合算法步骤 二、卡尔曼滤波 (Kalman Filter) 1. 卡尔曼滤波的原理 1.1. 预测步骤&#xff08;Predict&#xff09; 1.2. 更新步骤&#xff08;Update&#xff09; 2. 卡尔曼滤波在自动驾驶中的应用 2.1. 位置和姿态估计 2.2. 目标跟踪和感知 2…

【centos】Redis离线安装配置教程

Linux 离线安装Redis配置教程 一、下载二、安装redis三、设置redis开机自启&#xff0c;并且添加到系统服务四、gcc安装 redis官网地址&#xff1a;https://redis.io/ 一、下载 【点击进入下载地址&#xff1a;http://download.redis.io/releases/】选择安装包&#xff1a;re…

uniapp 地图分幅网格生成 小程序基于map组件

// 获取小数部分 const fractional function(x) {x Math.abs(x);return x - Math.floor(x); } const formatInt function(x, len) {let result x;len len - result.length;while (len > 0) {result 0 result;len--;}return result; }/*** 创建标准分幅网格* param …

STM32学习和实践笔记(6):自己进行时钟配置的思路

在《STM32学习和实践笔记&#xff08;4&#xff09;: 分析和理解GPIO_InitTypeDef GPIO_InitStructure (d)-CSDN博客》 中&#xff0c;我了解到&#xff0c;在程序执行我们写的main函数之前&#xff0c;实际上先执行了一个汇编语言所写的启动文件&#xff0c;以完成相应的初始…

Android 自定义解析html标签

用来解析类如下面代码里 html 标签样式. <span style"color: rgb(64, 169, 255);">文字内容</span> <span style"color: rgb(64, 169, 255); font-size: 16px;"><strong>文字</strong></span> 使用: val str htm…

django celery 异步任务 异步存储

环境&#xff1a;win11、python 3.9.2、django 4.2.11、celery 4.4.7、MySQL 8.1、redis 3.0 背景&#xff1a;基于django框架的大量任务实现&#xff0c;并且需要保存数据库 时间&#xff1a;20240409 说明&#xff1a;异步爬取小说&#xff0c;并将其保存到数据库 1、创建…

配置交换机SSH管理和端口安全——实验2:配置交换机端口安全

实验目的 通过本实验可以掌握&#xff1a; 交换机管理地址配置及接口配置。查看交换机的MAC地址表。配置静态端口安全、动态端口安全和粘滞端口安全的方法 实验拓扑 配置交换机端口安全的实验拓扑如图所示。 配置交换机端口安全的实验拓扑 实验步骤 &#xff08;1&#x…

springboot+vue2+elementui+mybatis- 批量导出导入

全部导出 批量导出 报错问题分析 经过排查&#xff0c;原因是因为在发起 axios 请求的时候&#xff0c;没有指定响应的数据类型&#xff08;这里需要指定响应的数据类型为 blob 二进制文件&#xff09; 当响应数据回来后&#xff0c;会执行 axios 后置拦截器的代码&#xff0…