SSM整合EasyExcel

【纯干货】SSM 实现将数据导出为 Excel 表格(利用反射实现类型通配) 利用反射实现了将任意的 List<T> 导出为 Excel 表格,不需要再去手动指定参数和值啦!全部自动读取自动生成,只包含了一个工具类和一个核心函数 阅读详情

1.导入依赖

<!-- Excel-->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>easyexcel</artifactId>
  <version>3.0.5</version>
</dependency>

2.Excel 上传工具类

public class ExcelListener extends AnalysisEventListener<User> {

    @Resource
    private UserMapper userMapper;
    @Resource
    private RoleMapper roleMapper;

    private static final int BATCH_COUNT = 5;
    List<User> list = new ArrayList<>();
    List<Integer> userIdList = new ArrayList<>();

    @Override
    public void invoke(User data, AnalysisContext analysisContext) {
        list.add(data);
    }

    private void saveData() {
        userMapper.insertMore(list);
        for (User user : list) {
            userIdList.add(user.getUserId());
        }
        roleMapper.insertRoleMore(userIdList);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        saveData();
    }
}

3.Excel 下载案例实体类

@Data
public class UserExcel {
    // index 会影响excel数据排列顺序
    @ExcelProperty(value = "user_id",index = 0)
    private Integer userId;
    @ExcelProperty(value = "头像",index = 1)
    private String userImage;
    @ExcelProperty(value = "用户名",index = 2)
    private String username;
    @ExcelProperty(value = "密码",index = 3)
    private String password;
    @ExcelProperty(value = "年龄",index = 4)
    private Integer userAge;
    @ExcelProperty(value = "性别",index = 5)
    private String userGender;
    @ExcelProperty(value = "状态",index = 6)
    private Integer userState;
}

4.案例

User 类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Integer userId;
    private String userImage;
    private String username;
    private String password;
    private Integer userAge;
    private String userGender;
    private Integer userState;
}

 Role 类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Role {
    private Integer roleId;
    private String roleName;
}

UserMapper 接口

@Insert("<script>INSERT INTO `user`(`username`,`password`,`user_age`,`user_gender`) VALUES " +
        "<foreach collection='list' separator=',' item='item'> " +
        "(#{item.username},#{item.password},#{item.userAge},#{item.userGender}) " +
        "</foreach> " +
        "</script>")
@Options(useGeneratedKeys = true,keyColumn = "user_id",keyProperty = "userId")
void insertMore(@Param("list") List<User> list);

RoleMapper 接口

@Insert("<script>INSERT INTO `user_role_rel`(`user_id`,`role_id`) VALUES " +
        "<foreach collection='list' separator=',' item='item'> " +
        "(#{item},2) " +
        "</foreach> " +
        "</script>")
void insertRoleMore(List<Integer> userIdList);

UserService 接口等省略

UserController

@GetMapping("/excelDownload")
public void download(HttpServletResponse response) {
    List<User> list = userService.selectList();
    response.setContentType("application/vnd.ms-excel");
    response.setCharacterEncoding("utf-8");
    String fileName = null;
    try {
        fileName = URLEncoder.encode("userInfo", "UTF-8");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        EasyExcel.write(response.getOutputStream(), UserExcel.class).sheet("userInfo").doWrite(list);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

@PostMapping("/excelUpload")
public ResponseMessage upload(MultipartFile file) {
    try {
        EasyExcel.read(file.getInputStream(),User.class,excelListener).sheet().doRead();
        return new ResponseMessage(200,"上传完成");
    } catch (IOException e) {
        return new ResponseMessage(500,"上传失败",e.getMessage());
    }
}

前端下载

<el-button type="info" @click="excelDownload" style="float:left;">导出数据</el-button>

excelDownload(){
  let _this = this;
  this.$axios({
    method: 'get',
    url: 'user/excelDownload',
    responseType: 'arraybuffer',
  }).then((rs) => {
    if (!rs) return alert('文件下载失败');
    let url = window.URL.createObjectURL(new Blob([rs.data], {type: '.xlsx'}));
    let a = document.createElement('a');
    a.style.display = 'none';
    a.href = url;
    a.setAttribute('download', `userInfo.xlsx`);
    document.body.appendChild(a);
    a.click();
    url = window.URL.revokeObjectURL(url);
    document.body.removeChild(a)
  }).catch((error) => {
    _this.$message(error);
  })
},

前端上传

<el-upload
    class="avatar-uploader"
    action
    :limit="1"
    :show-file-list="false"
    :http-request="uploadExcel"
    :on-success="handleAvatarSuccess">
    <el-button type="default" style="float:left;margin-left: 8px">上传数据</el-button>
</el-upload>

uploadExcel(param){
  let _this = this;
  const formData = new FormData() 
  formData.append('file', param.file) 
  this.$axios({
    method: 'post',
    url: 'user/excelUpload',
    headers:{
      'content-type': 'multipart/form-data'
    },
    data:formData
  }).then((rs) => {
    _this.$message(rs.data.msg);
    setTimeout(function () {
      _this.$router.go(0);
    }, 2000);
  }).catch((error) => {
    _this.$message(error);
  })
},
handleAvatarSuccess(rs, file, fileList){
  this.$message(rs.data.msg);
}
基于SSM框架的客户管理系统毕业设计:从架构设计到代码实现全解析 在Java Web开发领域,SSM(Spring、Spring MVC、MyBatis)框架组合是构建企业级应用的主流技术选型,其核心价值在于通过清晰的分层架构实现高效开发与维护。Spring框架的IoC(控制反转)容器负责管理对象生命周期与依赖注入,降低了组件间的耦合度;其AOP(面向切面编程)能力则能优雅地处理如事务管理、统一日志等横切关注点,确保业务逻辑的纯粹性。MyBatis作为半自动化的ORM框架,通过手写SQL与动态SQL功能,为复杂查询场景提供了精准控制与优化空间,有效避免了SQL注入风险。这 阅读详情

相关推荐

基于SSM的POI导入导出Excel实战

基于SSM的POI导入导出Excel实战 基于ssm框架的poi导入导出excel-mvc模式体验-增加删除修改搜索

ssm 简单实现阿里Easyexcel 导出Excel

小白初入学习java,老师布置作业,让自己实现Excel导出,百度搜索了很多资料,整理了一下,基本功能实现了,但是还是有很多不足,一切从简了,暂时先这样1.maven添加依赖2.定义实体类3.定义Dao层写sql4.Service5.实现类5.控制层6.web页面 1.maven添加依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactI

u011738139的博客 1162

SSM 下 Excel的导入导出

在SSM下 使用POI实现Excel的导入/导入 里面还有一些方法类 可供参考

SSM框架整合EasyExcel以及写入实操

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。由阿里巴巴提供。 1:搭建ssm框架 2:整合阿里巴巴的EasyExcel

dragon_crane的博客 1254

Windows 游戏 EXCEPTION_ACCESS_VIOLATION 修复:3类硬件问题与5步软件排查法

本文提供Windows游戏EXCEPTION_ACCESS_VIOLATION错误的终极修复指南,涵盖3类硬件问题(内存故障、显卡问题、超频不稳定)和5步软件排查法(文件验证、驱动更新、DEP调整等),帮助玩家彻底解决0xFFFFFFFFFFFFFFFF内存访问冲突问题。

weixin_31856057的博客 2418

Phantom Omni的力与力矩操作

*本说明为对Phantom Omni的力与力矩操作 ****************虚拟夹具的力读取与控制************************ 1、首先力的读取要声明【全局变量】 hduVector3Dd F;//三维矢量力(x,y,z三个方向的力) 2、对力的控制可以采用配置函数Set()与Get()函数; 3、对力觉的控制或读取操作需要放到【回调帧】开始与结束之间,如例子

xuliang355的博客 2562

ssm版的统计图Echart和easyexcel

工具的使用

qq_55648724的博客 1185

Matlab双目相机标定

1 概述 现在有许多双目相机在出厂时就已经标定好了,用户拿到手后可以直接使用,例如Intel Realsense系列。但是有些相机出厂的时候并没有完成标定工作,因而这个时候就需要我们自己来标定。由于笔者曾改装过一个双目相机,最远可以测至50m,因此有一定的心得体会想给大家分享一下。本文主要介绍双目相机标定的整个过程,以及导出标定数据的方法。 相机标定主要分为手动标定和自动标定,手动标定比较繁琐,这里主要介绍基于matlab工具箱的自动标定方式来对双目相机进行标定。具体的相关标定细节也可以参照这篇博客:m

weixin_46133643的博客 2万+

基于SSM的Excel的导入导出(EasyExcel)

基于SSM的Excel的导入导出(EasyExcel) 1、导入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.0-beta2</version> </dependency> 2、编写代码 1、持久类 @Data @AllArgsConstructor @No

你我皆是黑马 756

VSAN数据救援实战:当26个虚拟机突然不可访问时我们做了什么?

本文深度复盘了一次由运维操作失误引发的VMware vSAN存储危机,导致26个虚拟机数据不可访问的实战救援过程。文章详细剖析了vSAN脑裂状态的诊断方法,分享了在官方支持受限时,如何结合社区智慧与自主分析,通过精准的底层命令干预和状态推理,最终成功恢复全部数据的破局思路与操作细节,为vSAN数据救援提供了宝贵经验。

weixin_35749786的博客 237

鲁棒控制理论 --- H∞ 控制(被裁篇)

鲁棒控制理论 --- H∞ 控制

记录老板的每次pua,分享领导每天的毒鸡汤... 6万+

SSM整合-EasyExcel框架简化POI操作Excel

概述 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一些严重的问题,如代码编写繁琐且重复,极其耗费内存。EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百万的Excel 导入依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId&gt

weixin_44257023的博客 1156

(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解

讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解的(01)ORB-SLAM2源码无死角解析链接如下(本文内容来自计算机视觉life ORB-SLAM2 课程课件): (01)ORB-SLAM2源码无死角解析-(00)目录_最新无死角讲解:https://blog.youkuaiyun.com/weixin_43013761/article/details/123092196 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}

江南才尽江南山,年少无知年少狂! 1024

easyexcel ssm项目 java

我整理的一些关于【Java】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://d.51cto.com/f2PFnNEasyExcel与SSM项目整合实践 在当今信息化时代,数据的管理与处理变得尤为重要。对于Java开发者来说,EasyExcel是一个非常实用的库,可帮助我们方便地读写Excel文件。而...

weixin_41129920的博客 122

Mysql授权允许远程访问

前言 Mysql授权允许远程登录后,linux中安装的mysql可以与Navicat for Mysql(可视化)等连接,在可视化软件下管理数据库。 注意:不能使用临时密码 设置密码命令: alter user 'root'@'localhost' identified by '这里是你的密码'; 授权允许远程访问 一、授权命令: grant all privileges on *.* to '...

🏆 前端领域优质创作者 3万+

USB_TYPE-C 母座电路设计

本文详细介绍了USB Type-C接口(C2765186)的电路设计要点,重点解析了电源、识别和数据三部分的关键连接方案。电源部分需并联VBUS和GND引脚并加宽走线以承载3A电流;识别部分必须为CC1/CC2引脚配置5.1kΩ±1%精度的下拉电阻,这是触发PD充电的核心条件;数据部分通过短接正反插引脚实现盲插功能。文档还提供了完整的引脚对照表,并强调PCB布局需注意ESD防护、差分走线阻抗控制等要点,为Type-C接口设计提供了实用指导。

在读研究生,FPGA电路设计与功能开发。 583

SSM+MyBatis-Plus+EasyExcel+腾讯云&tianai滑动验证码接入项目搭建+简单实现增、删、改、查、导入、滑动验证码功能

SSM项目搭建+简单实现增、删、改、查 文章末尾附源码 一、什么是SSM框架 SSM框架是Spring、Spring MVC 、和Mybatis框架的整合,是标准的MVC模式。标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层。 使用spring实现业务对象管理,使用spring MVC负责请求的转发和视图管理,mybatis作为数据对象的持久化引擎。 二、搭建流程 1、新建一个maven项目 2、创建成功项目结构 3、Spring与Myba

Java_DYang的博客 3852

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

实现图片写入excel_整合easyExcel实现快速导出excel

今天分享的主题是如何使用easyExcel.主要从以下三点来介绍:传统poi和jxl的缺点EasyExcel的优点如何使用EasyExcel1.传统poi和jxl的缺陷 众所周知,导出是后台管理系统的常用功能,传统 Excel框架的不足:存在一个严重的问题,那就是非常耗内存,严重时会导致内存溢出。POI 虽然目前来说,是excel解析框架中被使用最广泛的,但这个框架并不完美...

weixin_35461822的博客 3890

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

谷粒学院源码

全栈前后端分离模式,主要涉及的知识点有springboot, vue, ssm, mybatisPlus, nodejs, element-ui, webpack, nginx, EasyExcel, nuxt,redis, jwt, canal, Echarts, springSecirity,springcloud, nacos, gateway, 阿里云的服务有OSS, 短信服务,视频点播

qq_61935738的博客 577

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SpringBoot2.x 整合 easyexcel 进行报表导入导出

【easyexcel简介】 阿里出品用来处理Excel的开源工具 为什么要使用 easyexcel ? Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。...

日拱一卒 1万+

Spring Boot 中简单整合EasyExcel

最基础的内容,目标就是能用就行,其他还得大佬们自行研究api

h1090637222的博客 526

【工具与中间件】EasyExcel 常用操作

EasyExcel 快速入门 与 最常用的 基本导入导出。真是 Easy 的 Excel 呢!

CoderSharry的博客 1145

SpringBoot+SSM构建小区物业管理系统实践

物业管理系统作为垂直领域的ERP系统,通过数字化手段解决传统物业管理中的核心业务流问题。基于SpringBoot框架的快速开发特性,结合SSM(Spring+SpringMVC+MyBatis)技术栈,可以实现高效的业务系统搭建。SpringBoot的自动配置和Starter依赖简化了传统SSM框架的复杂配置,而MyBatis则提供了灵活的数据库操作能力。在工程实践中,RBAC权限模型、状态模式流程设计和定时任务调度等技术的应用,能够有效支撑业主管理、物业费收缴等核心场景。通过集成阿里云短信、支付宝支付等第

weixin_34116482的博客 318

基于SSM农产品销售系统的设计与实现(毕业设计源码+lw文档)

本系统针对农产品销售 “产销对接低效、品质难溯源、订单管理混乱” 痛点,以 SSM 框架为核心,整合 MySQL、Redis、EasyExcel、阿里云 OSS,构建 “商品管理 - 订单处理 - 溯源跟踪 - 数据统计” 全流程系统,适配农户直销、农产品商家批发零售等场景。​ 技术架构分四层:表现层用 SpringMVC 处理请求,结合 JSP/Thymeleaf 实现页面渲染,适配 PC 端管理后台与移动端购物页面;业务层通过 Spring 封装核心逻辑,如农产品上架审核、订单生成、溯源信息关联,保障数

博主自己就是程序员、避免中介对接,从事软件开发多年,累计开发或辅导多名同学, 有丰富的项目开发和文档编写经验、同学们有任何项目问题都可以联系我~ 600

基于SSM框架的机床配件物流系统毕业设计全流程解析

在Java Web开发领域,MVC架构是构建企业级应用的核心设计模式,它将应用分为模型、视图和控制器三层,以实现关注点分离和代码复用。其原理在于通过控制器接收请求、模型处理业务逻辑和数据、视图呈现结果,从而提升系统的可维护性和可扩展性。SSM框架组合(Spring、Spring MVC、MyBatis)作为实现MVC架构的经典技术栈,因其稳定性和对分层架构的清晰体现,在高校毕业设计和企业级项目中具有重要价值。该技术栈特别适用于需要处理复杂业务逻辑和数据一致性的管理系统开发,例如供应链协同或物流系统。本文以“

weixin_34417183的博客 346
上一篇: Vue-cli2本地创建项目
小白菜不会Java
博客等级 码龄4年 37粉丝 2原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值