Springboot 最简单的结合MYSQL数据实现EXCEL表格导出及数据导入

defaultExport(list, pojoClass, fileName, response, exportParams);

}

//导出

public static void exportExcel(List<?> list, String title, String sheetName, Class<?> pojoClass,String fileName, HttpServletResponse response){

defaultExport(list, pojoClass, fileName, response, new ExportParams(title, sheetName));

}

public static void exportExcel(List<Map<String, Object>> list, String fileName, HttpServletResponse response){

defaultExport(list, fileName, response);

}

private static void defaultExport(List<?> list, Class<?> pojoClass, String fileName, HttpServletResponse response, ExportParams exportParams) {

Workbook workbook = ExcelExportUtil.exportExcel(exportParams,pojoClass,list);

if (workbook != null);

downLoadExcel(fileName, response, workbook);

}

private static void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {

try {

response.setCharacterEncoding(“UTF-8”);

response.setHeader(“content-Type”, “application/vnd.ms-excel”);

response.setHeader(“Content-Disposition”,

“attachment;filename=” + URLEncoder.encode(fileName, “UTF-8”));

workbook.write(response.getOutputStream());

} catch (IOException e) {

throw new RuntimeException(e.getMessage());

}

}

private static void defaultExport(List<Map<String, Object>> list, String fileName, HttpServletResponse response) {

Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);

if (workbook != null);

downLoadExcel(fileName, response, workbook);

}

//导入

public static List importExcel(String filePath,Integer titleRows,Integer headerRows, Class pojoClass){

if (StringUtils.isBlank(filePath)){

return null;

}

ImportParams params = new ImportParams();

params.setTitleRows(titleRows);

params.setHeadRows(headerRows);

List list = null;

try {

list = ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);

}catch (NoSuchElementException e){

throw new RuntimeException(“模板不能为空”);

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException(e.getMessage());

}

return list;

}

public static List importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class pojoClass){

if (file == null){

return null;

}

ImportParams params = new ImportParams();

params.setTitleRows(titleRows);

params.setHeadRows(headerRows);

List list = null;

try {

list = ExcelImportUtil.importExcel(file.getInputStream(), pojoClass, params);

}catch (NoSuchElementException e){

throw new RuntimeException(“excel文件不能为空”);

} catch (Exception e) {

throw new RuntimeException(e.getMessage());

}

return list;

}

}

OK,接下来玩导出导入,

既然是结和MYSQL数据库,那么我们简单看看,表,毕竟刚刚也创建了实体类:

好了,然后UserMapper简单贴一下:

@Mapper

public interface UserMapper {

//查询所有

List queryUserInfo();

//插入所有

void addUserInfo(List list);

}

相关的 userMapper.xml:

<?xml version="1.0" encoding="UTF-8" ?>

select *

from user

insert into user(

user_name,

user_age

)

values

(

#{item.userName},

#{item.userAge}

)

然后是UserService:

public interface UserService {

//查询所有

List queryUserInfo();

//插入所有

void addUserInfo(List list);

}

对应的实现类:

@Service

public class UserServiceImpl implements UserService {

@Autowired

UserMapper userMapper;

@Override

public List queryUserInfo() {

return userMapper.queryUserInfo();

}

@Override

public void addUserInfo(List list) {

userMapper.addUserInfo(list);

}

}

好了,开始导出导入了!

我们直接看代码,创建一个TestController,

package com.example.tdemo.controller;

import com.example.tdemo.pojo.User;

import com.example.tdemo.service.impl.UserServiceImpl;

import com.example.tdemo.util.ExcelUtil;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;

import java.util.List;

@RestController

public class TestController {

@Autowired

UserServiceImpl userService;

@RequestMapping(“exportExcel”)

public void export(HttpServletResponse response){

List userList = userService.queryUserInfo();

//导出操作

ExcelUtil.exportExcel(userList,“用户信息”,“sheet1”,User.class,“testDATA.xls”,response);

}

@RequestMapping(“importExcel”)

public String importExcel(){

String filePath = “C:\testInfo.xls”;

//解析excel,

List userList = ExcelUtil.importExcel(filePath,1,1,User.class);

//也可以使用MultipartFile,使用 FileUtil.importExcel(MultipartFile file, Integer titleRows, Integer headerRows, Class pojoClass)导入

System.out.println(“导入数据一共【”+userList.size()+“】行”);

userService.addUserInfo(userList);

List userList2 = userService.queryUserInfo();

return userList2.toString();

}

}

好像结束了,我们来简单调下接口,验证下吧:

导出前数据表数据是这样的:

调用导出接口(谷歌浏览器默认下载到对应路径,IE\360等浏览器可以选择导出下载地址):

OK,EXCEL表格已经导出,我们看看打开看看:

OK的,没有什么问题。

那我们继续调下导入吧(记得看下对应的接口,导入选择的路径我们是写死的,文件名也是,后期结合前端交互可以改为路径选择传入),

先看看需要导入数据的EXCEL表格内容,

好,开始调用导入接口(将EXCEL表格内容转化为List,再将List数据批量插入数据库):


OK,我们导入数据,插入数据库后打印出来当前表信息,其实已经可以确定,肯定是无误了,最后看看数据库:

好了,就到此结束吧,是不是很简单? 
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

[外链图片转存中…(img-p4qGi2BV-1713401006697)]

最近我根据上述的技术体系图搜集了几十套腾讯、头条、阿里、美团等公司21年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分

[外链图片转存中…(img-i3kCFVub-1713401006697)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

实现Excel数据导入MySQL数据库,可以采用以下步骤: 1. 在Spring Boot项目中添加Apache POI和MySQL数据库的依赖。 2. 创建一个包含Excel数据的POJO类,例如Student类,用于存储Excel中的每一行数据。 3. 创建一个Excel文件上传的Controller类,实现文件上传功能,读取Excel数据并将数据存储在List<Student>中。 4. 创建一个Service类,实现将List<Student>中的数据插入到MySQL数据库的功能。 5. 在Service类中使用JDBC或MyBatis等框架,连接 MySQL 数据库,将Excel数据插入到数据库。 下面是一个简单实现: 1. 添加依赖 在pom.xml中添加Apache POI和MySQL数据库的依赖: ``` <!-- Apache POI --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.1</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.1</version> </dependency> <!-- MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> </dependency> ``` 2. 创建POJO类 创建一个Student类,用于存储Excel中的每一行数据: ```java public class Student { private String name; private int age; private String gender; // 省略getter和setter方法 } ``` 3. 创建Controller类 创建一个Excel文件上传的Controller类,实现文件上传功能,读取Excel数据并将数据存储在List<Student>中: ```java @RestController @RequestMapping("/api/excel") public class ExcelController { @PostMapping("/upload") public String upload(@RequestParam("file") MultipartFile file) { try { List<Student> students = new ArrayList<>(); // 读取Excel文件 Workbook workbook = WorkbookFactory.create(file.getInputStream()); Sheet sheet = workbook.getSheetAt(0); // 遍历每一行数据 for (Row row : sheet) { Student student = new Student(); student.setName(row.getCell(0).getStringCellValue()); student.setAge((int)row.getCell(1).getNumericCellValue()); student.setGender(row.getCell(2).getStringCellValue()); students.add(student); } // 调用Service类将数据插入到MySQL数据库 studentService.insertStudents(students); return "上传成功!"; } catch (Exception e) { e.printStackTrace(); return "上传失败!"; } } } ``` 4. 创建Service类 创建一个Service类,实现将List<Student>中的数据插入到MySQL数据库的功能: ```java @Service public class StudentService { @Autowired private JdbcTemplate jdbcTemplate; public void insertStudents(List<Student> students) { String sql = "INSERT INTO student(name, age, gender) VALUES (?, ?, ?)"; for (Student student : students) { jdbcTemplate.update(sql, student.getName(), student.getAge(), student.getGender()); } } } ``` 5. 测试 启动Spring Boot应用程序,并使用Postman或其他工具向/upload端点上传Excel文件,可以看到数据已成功插入到MySQL数据库中。 以上就是Spring Boot实现Excel数据导入MySQL简单实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值