easyexcel--多sheet页导入导出

server/2024/10/24 12:24:31/

多sheet页导出

核心代码就是下图里面的,使用EasyExcel.writeSheet创建一个sheet,然后用excelWriter写入就行了,很简单

java">    @GetMapping("downloadMultiSheet")public void downloadMultiSheet(HttpServletResponse response) throws IOException {// 导出excel如果失败会返回jsontry {response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=" + fileName + ".xlsx");ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();// 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。// sheetNo从0开始WriteSheet writeSheet = EasyExcel.writerSheet(0, "用户").head(User.class).build();// 去数据库查找数据List<User> users = userService.list();excelWriter.write(users, writeSheet);writeSheet = EasyExcel.writerSheet(1, "部门").head(Department.class).build();// 去数据库查找数据List<Department> departments = departmentService.list();excelWriter.write(departments, writeSheet);// 写完要关闭,否则缓冲区数据会丢失excelWriter.close();} catch (Exception e) {// 重置responseresponse.reset();response.setContentType("application/json");response.setCharacterEncoding("utf-8");Map<String, String> map = MapUtils.newHashMap();map.put("status", "failure");map.put("message", "下载文件失败" + e.getMessage());response.getWriter().println(JSON.toJSONString(map));}}

多sheet导入

核心代码如图所示,使用EasyExcel.readSheet读取不同的sheet

java">    @PostMapping("uploadMultiSheet")public Result uploadMultiSheet(@RequestPart MultipartFile file) throws IOException {try (ExcelReader excelReader = EasyExcel.read(file.getInputStream()).build()) {// 这里为了简单 所以注册了 同样的head 和Listener 自己使用功能必须不同的Listener// sheetNo从0开始ReadSheet readSheet1 =EasyExcel.readSheet(0).head(User.class).registerReadListener(new PageReadListener<User>(users -> {userService.saveBatch(users);})).build();ReadSheet readSheet2 =EasyExcel.readSheet(1).head(Department.class).registerReadListener(new PageReadListener<Department>(departments -> {departmentService.saveBatch(departments);})).build();// 这里注意 一定要把sheet1 sheet2 一起传进去,不然有个问题就是03版的excel 会读取多次,浪费性能excelReader.read(readSheet1, readSheet2);}return resultOk();}


http://www.ppmy.cn/server/104999.html

相关文章

k8s教程

1. k8s框架 - kubernetes的架构- Control Plane: 控制K8S集群的组件。- Api Server: 集群的访问入口。- etcd: 存储集群的数据。一般情况下&#xff0c;只有API-SERVER会访问.- Control Manager: 维护集群的状态。- Scheduler: 负责Pod的调度功能。- Wor…

云计算实训35——镜像的迁移、镜像的创建、使用docker查看ip、端口映射、容器持久化

一、镜像的迁移 打包镜像 docker save -o 文件名称 镜像名&#xff1a;标签 #查看帮助命令[rootdocker ~]#docker --help#查看save打包用法[rootdocker ~]#docker save --help#查看原有镜像[rootdocker ~]#docker images#将镜像打包[rootdocker ~]#docker save -o centos.t…

一款好看的WordPress REST API 主题

介绍&#xff1a; 主题特色&#xff1a; 使用Nuxtjs WordPress Rest Api 实现前后端分离&#xff0c;可完成多端部署&#xff1b; 主题支持自动切换黑夜模式。 使用说明&#xff1a; service 目录为wordpress主题文件&#xff0c;需要拷贝到wordpress主题目录下&#xff0…

能源管理系统中计算引擎的应用

‌计算引擎是一种用于处理和分析数据的软件工具&#xff0c;它可以根据不同的数据处理需求选择不同的计算模型和方法。‌ 计算引擎可以分为离线计算引擎和实时计算引擎&#xff0c;离线计算引擎如‌MapReduce和‌Spark主要用于批量数据处理&#xff0c;而实时计算引擎如‌Storm…

【Oracle篇】统计信息和动态采样的深度剖析(第一篇,总共六篇)

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;DBA一名✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux&#xff0c;也在扩展大数据方向的知识面✌️…

opencv-4.8.0 Yes everything works with CUDA 12.3 and cuDNN 8.9.7.

opencv-4.8.0 CUDA 12.3 DNN 8.9.7 完美编译运行 脚本&#xff1a; sudo apt-get install libeigen3-dev sudo apt-get install protobuf-compiler sudo apt-get install libeigen3-dev sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen cd ${current_path}/deps…

k8s高版本(1,28)部署NodePort模式下的ingress-nginx的详细过程及应用案例

文章目录 前言环境ingress安装应用案例(ingress-http案例&#xff1a; 基于名称的负载均衡) 前言 这个是nodeport模式下的&#xff0c;如果需要loadbalancer模式下的&#xff0c;看看博主下面以前的博客 链接: k8s学习–负载均衡器matelLB的详细解释与安装 链接: k8s学习–ing…

Git仓储迁移

利用裸仓库进行迁移 在 Git 中进行仓库迁移通常包括将一个仓库从一个远程位置迁移到另一个远程位置。以下是一个简单的步骤指南&#xff1a; 克隆现有仓库 首先&#xff0c;克隆你想要迁移的现有仓库&#xff1a; git clone --bare https://old-repo-url.git–bare 选项表示…