文章目录

  • SpringMVC框架通过Excel批量导入数据
    • 1、导入需要的jar包
    • 2、配置文件
    • 3、创建Java对象类
    • 4、解析Excel表格数据的工具类
    • 5、前端请求
    • 6、Controller处理
    • 7、运行结果

SpringMVC框架通过Excel批量导入数据

在开发过程中,向数据库导入大量的数据是不可避免的,尤其是在数据管理系统中该功能的作用不容小视。
前提: 该功能是基于Spring框架的,集成了Maven以及Tomcat等插件,前端我使用的jsp作为页面。

1、导入需要的jar包

注意jar包的依赖,有时候缺少一个jar包程序就难以跑起来。要了解jar包的基本作用。下面我给的jar包都是不可或缺的。还有spring-context、spring-webmvc、servlet-api等jar包。

<!--
配置解析excel表格jar包:
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>3.17</version>
</dependency>
<!--
commons-fileupload.jar通常和commons-io.jar包一起使用的。
用来操作文件上传。里面封装了很多上传的功能,大大简化了我们写上传代码的复杂性。
-->
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version>
</dependency>
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>

2、配置文件

注意:在web.xml中要进行加载或者在application.xml配置文件中导入。

<!--    文件上传配置  -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><!--        请求编码格式,必须和jsp的pageEncoding的属性一致,以便使用正确的读取表单的数据,默认为ISO-8859-1--><property name="defaultEncoding" value="utf-8"/><!--        上传文件大小上限,单位为字节(10485760=10M) 可以不用配置--><property name="maxUploadSize" value="10485760"/><property name="maxInMemorySize" value="40960"/>
</bean>

3、创建Java对象类

注意:在这里省略了无参(有参)构造方法以及get/set/toString等方法,这些都可以通过系统生成就不浪费空间了。

/*** @author wenhua* @date 2022年04月13日 9:58*/
public class User {private Integer id;private String name;private Integer age;private String sex;

于此同时那,需要准备好即将导入的数据表格。当然您也可以自己换其他数据,但是切记没有数据的单元格不要修改哟。

4、解析Excel表格数据的工具类

该工具类是至关重要的,不然总是报错哟。

import edu.pro.wenhua.bean.User;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;/*** 解析Excel表格的工具类*/
public class POIUtil {/*** 导入表格的解析方法* @param file* @return* @throws Exception*/public static List<User> importExcel(InputStream file) throws Exception{// 注意xssf只能解析xlsx为后缀的表格文件Workbook workbook = new XSSFWorkbook(file);Sheet sheet = null;// 总共有几个sheet表格for(int i = 0;i < workbook.getNumberOfSheets();i++){//获取每个sheetsheet = workbook.getSheetAt(i);List<User> list = new ArrayList<User>();//getPhysicalNumberOfRows获取有记录的行数for(int j = 1;j < sheet.getPhysicalNumberOfRows();j++){Row row = sheet.getRow(j);if(row!=null){User user = new User();//getLastCellNum获取最后一列for(int k = 0 ;k < row.getLastCellNum();k++){if(row.getCell(k)!=null && !row.getCell(k).equals("")){// idif(k==0){/*获取单元格XSSFCell cell = row.getCell(0);设置单元格类型cell.setCellType(CellType.STRING);获取单元格数据String cellValue = cell.getStringCellValue()*/Cell cell = row.getCell(0);cell.setCellType(CellType.STRING);user.setId(Integer.valueOf(cell.getStringCellValue()));}// nameif(k==1){Cell cell = row.getCell(1);user.setName(cell.getStringCellValue());}// ageif(k==2){Cell cell = row.getCell(2);cell.setCellType(CellType.STRING);user.setAge(Integer.valueOf(cell.getStringCellValue()));}// sexif(k==3){Cell cell = row.getCell(3);user.setSex(cell.getStringCellValue());}}}list.add(user);}}System.out.println("读取sheet表:"+ workbook.getSheetName(i) + "完成");return list;}return null;}
}

好啦,已经完成一半了。

5、前端请求

注意,这里为了简单我没有使用前端框架渲染,这样又便于您的理解和使用。记得修改自己的路径哟。

<form enctype="multipart/form-data" method="post" action="fileCon/imExcel"><input type="file" name="file" /><input type="submit" value="上传" />
</form>

6、Controller处理

注意导包。

/*** 接收Excel表格的Controller类*/
@RestController
@RequestMapping(path = "/fileCon")
public class UploadFileController {/*** 处理Excel表格的方法* @param file*/@RequestMapping("/imExcel")public void AddUserByExcel(@RequestParam("file") CommonsMultipartFile file){try{List<User> users = POIUtil.importExcel(file.getInputStream());// Excel文件解析并封装数据到User中users.stream().forEach(user -> System.out.println(user.toString()));// 通过流循环输出User对象}catch (Exception e){e.printStackTrace();}}
}

7、运行结果

读取sheet表:Sheet1完成
User{id=1, name='WenHua', age=22, sex='男'}
User{id=2, name='LiMing', age=21, sex='女'}
User{id=3, name='Jim', age=25, sex='女'}
User{id=4, name='Tom', age=21, sex='男'}
User{id=5, name='Jack', age=22, sex='男'}
User{id=6, name='LiHua', age=22, sex='男'}
User{id=7, name='DanNi', age=21, sex='女'}
User{id=8, name='Java', age=22, sex='男'}

好啦,实现到这那,其实后面的部分,对于一名开发人员来说就轻而易举了,将数据传输到Service层,然后再到Dao层,于此同时集成Mybatis框架也可以通过foreach标签进行循环插入数据,谢谢您的读阅。

SpringMVC框架通过Excel批量导入数据相关推荐

  1. 【转帖】Java实现Excel批量导入数据

    这篇文章主要为大家详细介绍了Java实现Excel批量导入数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Excel的批量导入是很常见的功能,这里采用Jxl实现,数 ...

  2. Spring Boot 实现excel 批量导入数据(模板下载 ->数据导入->导入失败表格下载)

    批量导入数据以用户为例[不贴数据库操作代码,都是简单的插入和查询操作自己写] 1 导入依赖 2 批量导入模板下载 3 批量导入数据 准备工作 实现代码 测试接口 4 下载导入失败表格 5 实体类 6 ...

  3. excel批量导入数据

    这个功能也是我以前项目中经常用到的,感觉很实用,必须拿来分享下: excel进行批量导入数据,结合struts2+ajax 导入的视图:batchAdd.ftl(视图无关紧要的,可以换成其他任何视图, ...

  4. java使用POI实现Excel批量导入数据。

    1.背景 项目中有使用easypoi,处理常规excel问题,但是现在有个需求,需要动态生成导出的报表字段.同时,根据导入的excel,增加数据信息.(有可能会出现,导入的报表是几天前下载的,不会最新 ...

  5. EXCEL批量导入数据MVC

    这里简单实现EXCEL的批量导入 直接看代码,里面有注释 前端页面实现 @{ ViewBag.Title = "批量添加数据"; //Layout = null; } href=& ...

  6. Springboot Excel批量导入数据

    POI处理Excel <!-- poi处理excel --><dependency><groupId>org.apache.poi</groupId>& ...

  7. Java实现Excel批量导入数据

    Excel的批量导入是很常见的功能,这里采用 Jxl实现,数据量或样式要求较高可以采用 poi 框架环境:Spring + SpringMvc(注解实现) 首先导入依赖jar包 <depende ...

  8. 如何使用excel批量导入数据到数据库?看这一篇就够了!超详细

    应用场景 当我们遇到要批量新增数据库条数的时候 1.你可以写一个接口去用excel去导入,可以自动化,但是前提是你知道你要新增的表和流程才可以 2.可以用excel直接进行数据库导入 excel导入数 ...

  9. php 用excel 批量导入数据

    public function post(){if($this->request->isPost()){vendor("PHPExcel.PHPExcel");//导入 ...

最新文章

  1. 小试“ASUS WL-500W无线路由”
  2. python 简单数据库_Python打造一个简单的本地数据库
  3. 如何使用selenium webdriver来判断一个网页加载完毕
  4. 分别统计出其中英文字母、空格、数字和其它字符的个数 matlab 程序,编写一段程序,要求先输入一行字符,然后分别统计出其中英文...
  5. ap接口 php_2018年小米高级 PHP 工程师面试题(模拟考试卷)
  6. Redis的管道pipeline
  7. golang https 代理_代理,生活中随处可见,Go中如何进行 HTTPS 代理呢?
  8. rstudio线性回归_R语言如何做多元线性回归?以例子说明?
  9. 县级外业调查及举证软件_MapGIS第三次国土调查系列产品
  10. 携程逆向爬虫 | PC网页端 | 旅游景点评论爬虫
  11. html怎么修改td 的宽度,互联网常识:htmltd怎么设置宽度
  12. 组件化之路 - ViewModel一知半解
  13. 教你手动编辑图像,提高ABBYY FineReader PDF 15识别准确性
  14. springboot 后台管理系统源码
  15. 【Centos】如何下载centos的各个版本镜像(演示下载Centos7.3)
  16. 前端显示微信消息中的emoji表情
  17. 段码液晶屏疑难杂症常见分析
  18. OMAPL138upp
  19. 唱吧导出的是php,唱吧黑科技:一键修音功能到底有多强大!居然连Rap都能修!...
  20. 3 - 组合逻辑代码设计和仿真

热门文章

  1. java通讯录带报告
  2. 阿里巴巴Java开发手册(纪念版 1.3.1)记录
  3. 阿里巴巴技术开发手册
  4. 小学生加减法出题神器c语言编程,低年级口算出题系统下载
  5. jqgrid点空余地方保存编辑
  6. RT Thread根据开发板制作BSP方法
  7. SQL server2012之使用T-SQl语句对数据库和模式进行创建、修改、删除
  8. 文通表格票据识别系统介绍
  9. 输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素。
  10. IPNC_RDK_4.1分析