Spring Boot使用Poi将Excel导入进数据库


0. 前言

每当我使用Java进行编码的时候,就感觉自己像是一个拿着AK进行战斗的黑人🙃

【此处省略一张图】

本以为能够两天完成的毕设Excel文件上传与解析模块,没想到却花了足足四天才实现大半。(菜的程度可见一斑。)

先是找了EasyExcel的相关教程进行学习(例如:教程,优快云上的各种EasyExcel教程基本都是按照这个教程来写的,可它们要么省略了一些步骤或源码,难以看懂,要么是涵盖了很多类型的Excel操作,同样难以看懂,因此在亲自尝试后没能做出来。

然后发现教程中用到了MyBatis Plus与MyBatis Plus Generator,就去简单学习了一下MPG;可刚学完又发现用到了Swagger和其他的一些依赖…告辞👋🏻

幸运的是后来遇上了POI,在一份大佬教程与一位大佬实体的帮助下终于成功实现了上传Excel文件,解析后将数据插入到了数据库。


1. 效果

1.1 Excel文件

1.2 网页页面

1.3 数据库


2. 思路

  • 使用PoiPoi-ooxml实现Excel解析

  • 使用MySQLMyBatis实现数据库连接与操作

  • 使用Commons-FileuploadCommons-IO实现文件上传与IO流


3. 项目结构


4. 项目源码

4.1 pom.xml添加相关依赖

<!-- Excel相关 -->
<!-- 1. Poi:针对Excel2003(后缀为.xls) -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.15</version>
</dependency>
<!-- 2. Poi-ooxml:针对Excel2007及以后版本(后缀为.xlsx) -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.15</version>
</dependency>


<!-- 数据库相关 -->
<!-- 1. MySQL -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>
<!-- 2. MyBatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.2</version>
</dependency>


<!-- 其它 -->
<!-- 1. 文件上传 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>
<!-- 2. io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

4.2 application.properties相关配置

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/silk_dormitory?&useUnicode=true&characterEncoding=UTF-8

spring.datasource.username=root
spring.datasource.password=12345678
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值