EasyExcel实现多sheet文件导出

文章目录

  • EasyExcel
  • 引入依赖
  • 表结构
    • 学生表
    • 课程表
    • 教师表
  • 项目结构
    • 下载模板实体类
      • StudentVo
      • CourseVo
      • TeacherVo
    • Controller
    • Service
      • EasyExcelService
      • StudentService
      • CourseService
      • TeacherService
    • ServiceImpl
      • EasyExcelServiceImpl
      • StudentServiceImpl
      • CourseServiceImpl
      • TeacherServiceImpl
    • mapper
      • StudentMapper
      • CourseMapper
      • TeacherMapper
  • 启动项目
  • 测试

EasyExcel

EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。
他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。

引入依赖

 	<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.1.3</version> </dependency>

表结构

学生表

CREATE TABLE `student`  (`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '学生表ID',`sname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学生姓名',`sno` bigint NOT NULL COMMENT '学号',`sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别',`age` int NOT NULL COMMENT '年龄',`is_deleted` tinyint UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',PRIMARY KEY (`id`)
);

在这里插入图片描述

课程表

CREATE TABLE `course`  (`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '课程表ID',`cname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程名',`cno` bigint NOT NULL COMMENT '课程号',`tno` bigint NOT NULL COMMENT '任教教师编码',`is_deleted` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',PRIMARY KEY (`id`)
);

在这里插入图片描述

教师表

CREATE TABLE `teacher`  (`id` bigint UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '教师表ID',`tname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '教师姓名',`tno` bigint NOT NULL COMMENT '教师编号',`sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '性别',`age` int NOT NULL COMMENT '年龄',`is_deleted` tinyint(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '是否删除',PRIMARY KEY (`id`)
);

在这里插入图片描述
多sheet上传时已上传了部分数据,所以表中目前有数据

项目结构

在这里插入图片描述

下载模板实体类

StudentVo

@Data
public class StudentVo {/**学生姓名**/@ExcelProperty(value = "姓名",index = 0)private String sname;/**学号**/@ExcelProperty(value = "学号",index = 1)private Long sno;/**性别**/@ExcelProperty(value = "性别",index = 2)private String sex;/**年龄**/@ExcelProperty(value = "年龄",index = 3)private Integer age;}

CourseVo

@Data
public class CourseVo {/**课程名**/@ExcelProperty(value = "课程名",index = 0)private String cname;/**课程号**/@ExcelProperty(value = "课程号",index = 1)private Long cno;/**任教教师编号**/@ExcelProperty(value = "任教教师编号",index = 2)private Long tno;
}

TeacherVo

@Data
public class TeacherVo {/**教师姓名**/@ExcelProperty(value = "姓名", index = 0)private String tname;/**教师编号**/@ExcelProperty(value = "教师编号", index = 1)private Long tno;/**性别**/@ExcelProperty(value = "性别", index = 2)private String sex;/**年龄**/@ExcelProperty(value = "年龄", index = 3)private Integer age;
}

Controller

@RestController
@RequestMapping("/easyExcel")
public class EasyExcelController {@Resourceprivate IEasyExcelService easyExcelService;@PostMapping("excelExport")public void excelExport(HttpServletResponse response){easyExcelService.excelExport(response);}
}

Service

EasyExcelService

public interface IEasyExcelService {void excelExport(HttpServletResponse response);
}

StudentService

public interface IStudentService extends IService<Student> {
}

CourseService

public interface ICourseService extends IService<Course> {
}

TeacherService

public interface ITeacherService extends IService<Teacher> {
}

ServiceImpl

EasyExcelServiceImpl

@Service
public class EasyExcelServiceImpl implements IEasyExcelService {@Resourceprivate StudentMapper studentMapper;@Resourceprivate CourseMapper courseMapper;@Resourceprivate TeacherMapper teacherMapper;@Overridepublic void excelExport(HttpServletResponse response) {try {String fileName = "student";ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();WriteSheet studentInfo = EasyExcel.writerSheet(0,"student").head(StudentVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();WriteSheet courseInfo = EasyExcel.writerSheet(1,"course").head(CourseVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();WriteSheet teacherInfo = EasyExcel.writerSheet(2,"teacher").head(TeacherVo.class).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();List<Student> studentList = studentMapper.selectList(null);List<Course> courseList = courseMapper.selectList(null);List<Teacher> teacherList = teacherMapper.selectList(null);excelWriter.write(studentList,studentInfo);excelWriter.write(courseList,courseInfo);excelWriter.write(teacherList,teacherInfo);response.setContentType("application/vnd.ms-excel;charset=utf-8");response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition","attachment;filename="+fileName+".xlsx");excelWriter.finish();}catch (IOException e){e.printStackTrace();}}

StudentServiceImpl

@Service
public class StudentServiceImpl extends ServiceImpl<StudentMapper, Student> implements IStudentService {
}

CourseServiceImpl

@Service
public class CourseServiceImpl extends ServiceImpl<CourseMapper, Course> implements ICourseService {
}

TeacherServiceImpl

@Service
public class TeacherServiceImpl extends ServiceImpl<TeacherMapper, Teacher> implements ITeacherService {
}

mapper

StudentMapper

public interface StudentMapper extends BaseMapper<Student> {
}

CourseMapper

public interface CourseMapper extends BaseMapper<Course> {
}

TeacherMapper

public interface TeacherMapper extends BaseMapper<Teacher> {
}

启动项目

在这里插入图片描述

测试

使用postman测试,测试方法如下
在这里插入图片描述
在这里插入图片描述
下载完成后,打开Excel表查看内容
请添加图片描述
请添加图片描述
请添加图片描述

操作完成

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

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

相关文章

Ubuntu 配置国内源

配置国内源 因为众所周知的原因&#xff0c;国外的很多网站在国内是访问不了或者访问极慢的&#xff0c;这其中就包括了Ubuntu的官方源。 所以&#xff0c;想要流畅的使用apt安装应用&#xff0c;就需要配置国内源的镜像。 市面上Ubuntu的国内镜像源非常多&#xff0c;比较有…

cuda编程day001

一、环境&#xff1a; ①、linux cuda-11.3 opecv4.8.0 不知道头文件和库文件路径&#xff0c;用命令查找&#xff1a; # find /usr/local -name cuda.h 2>/dev/null # 查询cuda头文件路径 /usr/local/cuda-11.3/targets/x86_64-linux/include/cuda.h # find /usr/…

wazuh环境配置及漏洞复现

目录 一、wazuh配置 1进入官网下载OVA启动软件 2.虚拟机OVA安装 二、wazuh案例复现 1.wazuh初体验 2.这里我们以SQL注入为例&#xff0c;在我们的代理服务器上进行SQL注入&#xff0c;看wazuh如何检测和响应 一、wazuh配置 1进入官网下载OVA启动软件 Virtual Machine (O…

2023国赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

JavaScript:交集和差集的应用场景

在集合A和集合B中&#xff0c;属于集合A&#xff0c;同时也属于集合B的元素组成的集合&#xff0c;就是交集。 在A中所有不属于集合B元素&#xff0c;组合成集合&#xff0c;就是差集。 那么在平时的开发中&#xff0c;如何使用差集和交集来解决问题呢&#xff1f; 现在有这…

springboot小知识:配置feign服务超时时间

背景&#xff1a;当前项目通过feign服务调用了其他两个项目的接口&#xff0c;但是由于特殊需求&#xff0c;需要调整某一个项目的feign服务的默认超时时间&#xff1a; 默认连接超时10秒&#xff0c;默认读取超时时间 60秒 1.找到定义的FeignClient 2.根据FeignClient定义的名…

国内ChatGPT对比与最佳方案

很久没写内容了&#xff0c;主要还是工作占据了太多时间。简单分享下我这段时间的研究吧,由于时间仓促&#xff0c;有很多内容没有具体写&#xff0c;请自行到我分享的网站体验查看。 前言 ChatGPT 的出现确实在很大程度上改变了世界。许多人已经亲身体验到了ChatGPT作为一个…

GOLANG面向对象:封装 继承 多态

面向过程转换到面向对象&#xff0c;那么必然会涉及到几个特性&#xff1a;封装&#xff0c;继承&#xff0c;多态&#xff0c;那么Golang中的面向过程会有什么特性&#xff1f;那我们来仔细说一说&#xff1a; 封装&#xff1a; 首先要一个类的概念&#xff0c;类就像一下工厂…

HarmonyOS应用开发者高级认证练习题

系列文章目录 HarmonyOS应用开发者基础认证练习题 HarmonyOS应用开发者高级认证练习题 文章目录 系列文章目录前言一、判断二、单选三、多选 前言 本文所有内容来源于个人进行HarmonyOS应用开发者系列认证的学习过程中所做过的练习题&#xff0c;所有答案均是个人作答&#x…

iptables防火墙(SNAT与DNAT)

目录 1 SNAT 1.1 SNAT原理与应用 1.2 SNAT工作原理 1.3 SNAT转换前提条件 2 SNAT示例 ​编辑 2.1 网关服务器配置 2.1.1 网关服务器配置网卡 2.1.2 开启SNAT命令 2.2 内网服务器端配置 2.3 外网服务器端配置 2.4 网卡服务器端添加规则 2.5 SNAT 测试 3 DNAT 3.1 网卡…

wazuh环境配置及案例复现

文章目录 wazuh环境配置及案例复现wazuh环境配置 案例复现 wazuh环境配置及案例复现 wazuh环境配置 进入官网下载ova软件 https://documentation.wazuh.com/current/deployment-options/virtual-machine/virtual-machine.html 打开下载的ova&#xff0c;密码和用户名会显示…

2分钟搭建自己的GPT网站

如果觉得官方免费的gpt&#xff08;3.5&#xff09;体验比较差&#xff0c;总是断开&#xff0c;或者不会fanqiang&#xff0c;那你可以自己搭建一个。但前提是你得有gpt apikey。年初注册的还有18美金的额度&#xff0c;4.1号后注册的就没有额度了。不过也可以自己充值。 有了…

开发一个npm组件包

vue项目初始化 vue create mytest 启动项目以后 组件开发 开发的组件写在 package中 如下如例 开发一个 listpage的组件 里面放了一个a链接注册组件配置打包 "package": "vue-cli-service build --target lib ./src/package/index.js --name managerpage -…

linux文本三剑客

linux文本三剑客 1、grep2、sed 1、grep 过滤 参数用法作用-igrep -i STRING xxx.txt从xxx.txt文件查找不区分大小写STRING-wgrep -w STRING xxx.txt精确匹配STRING-egrep -e STRING1 -e STRING2 xxx.txt查找多个STRING行-ngrep -n STRING xxx.txt查看STRING 在第几行-vgrep …

使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。

文章目录 1、使用mysql:5.6和 owncloud 镜像&#xff0c;构建一个个人网盘。2、安装搭建私有仓库 Harbor3、编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。具体要求如下&#xff1a;4、Dockerfile快速搭建自己专属的L…

【每日一招小技巧】编译安装提升系统自带的java版本

hello&#xff0c;大家好&#xff0c;又到了每日一招的环节&#xff0c;今天要给大家介绍的是&#xff0c;如何用源码安装的方式&#xff0c;升级系统自带的ava版本&#xff01; 首先&#xff0c;我们要查看一下我们系统自带的java版本是多少&#xff0c;怎么查看呢&#xff1…

机器学习简介

文章目录 引言1. 从找规律说起2. 机器学习应用2.1 有监督学习2.2 无监督学习2.2.1 聚类2.2.2 降维 3. 机器学习一般流程4. 机器学习常用概念5. 深度学习简介5.1 引入 -- 猜数字5.2 深度学习5.2.1 隐含层/中间层5.2.2 随机初始化5.2.3 损失函数5.2.4 导数与梯度5.2.5 梯度下降5.…

协议的分层结构

1.1TCP/IP 协议 为了使各种不同的计算机之间可以互联&#xff0c;ARPANet指定了一套计算机通信协议&#xff0c;即TCP/IP 协议(族). 注意TCP /IP 协议族指的不只是这两个协议 而是很多协议&#xff0c; 只要联网的都使用TCP/IP协议族 为了减少 协议设计的复杂度 &#xff0c;大…

【Nginx】Nginx 简介

Ngnix 特点 模块化设计&#xff1a;良好的扩展性&#xff0c;可以通过模块方式进行功能扩展。高可靠性&#xff1a;主控进程和 worker 是同步实现的&#xff0c;一个 worker 出现问题&#xff0c;会立刻启动另一个 worker。内存消耗低&#xff1a;一万个长连接&#xff08;kee…

Php“牵手”淘宝商品销量数据采集方法,淘宝API接口申请指南

淘宝天猫商品销量接口 API 是开放平台提供的一种 API 接口&#xff0c;它可以帮助开发者获取商品的详细信息&#xff0c;包括商品的标题、描述、图片&#xff0c;月销量&#xff0c;总销量等信息。在电商平台的开发中&#xff0c;销量接口API是非常常用的 API&#xff0c;因此本…