springboot批量导入excel数据
1 背景
小白今天闲着没事,在公司摸鱼,以为今天有事无聊的一天,突然上头说小子,今天实现一下批量导入Excel数据吧,当时我的内心是拒绝的,然后默默打开idea。
2 介绍
2.1 框架
java本身并不支持读取excel,所有读取excel需要借助一些框架。目前有几种方式,
1. Apache POI
2. Java Excel API
3. easyexcel
这里主要讲解的是 Apache POI,Apache POI支持03版以及07年版 区别是后缀不一样,03版对应的是xls 07版对应的是xlsx xlsx
这里主要讲解的是07版的
2.2 excel字段介绍
1.sheet表示的是
excel底部的工作表.
对应的是POI的的XSSFSheet
2.row表示的是行
对应的是POI的的XSSFRow
3.cell表示的是每一行的单元格.
对应的是POI的的Cell
3 源码
3.0 片段说明
1.上传文件使用springboot的MultipartFile
对应
MultipartFile file
2.创建对象
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);
3.获取sheet(默认第一个)
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
3.1 控制层源码
@RequestMapping("/import")
public void importExcel(@RequestParam("file") MultipartFile file) throws Exception{
InputStream inputStream = file.getInputStream();
//07年的 不兼容之前
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = xssfWorkbook.getSheetAt(0);
//获取行数
int lastRowNum = sheet.getLastRowNum();
for (int i = 1; i <= lastRowNum; i++) {
XSSFRow row = sheet.getRow(i);
QuChannel quChannel = new QuChannel();
if (row.getCell(0) != null){
row.getCell(0).setCellType(XSSFCell.CELL_TYPE_STRING);
quChannel.setChannel(row.getCell(0).getStringCellValue());
}
if (row.getCell(1) != null){
row.getCell(1).setCellType(XSSFCell.CELL_TYPE_STRING);
quChannel.setChannelName(row.getCell(1).getStringCellValue());
}
if (row.getCell(2) != null){
row.getCell(2).setCellType(XSSFCell.CELL_TYPE_STRING);
quChannel.setRemarks(row.getCell(2).getStringCellValue());
}
if (row.getCell(3) != null){
quChannel.setChannelSource((int) row.getCell(3).getNumericCellValue());
}
if (row.getCell(4) != null){
quChannel.setActivityType((int) row.getCell(4).getNumericCellValue());
}
if (row.getCell(5) != null){
quChannel.setDeliveryTime(row.getCell(5).getDateCellValue());
}
if (row.getCell(6) != null){
row.getCell(6).setCellType(XSSFCell.CELL_TYPE_STRING);
quChannel.setOriginalLink(row.getCell(6).getStringCellValue());
}
if (row.getCell(7) != null){
row.getCell(7).setCellType(XSSFCell.CELL_TYPE_STRING);
quChannel.setSaLink(row.getCell(7).getStringCellValue());
}
if (row.getCell(8) != null){
quChannel.setDeliveryMode((int) row.getCell(8).getNumericCellValue());
}
if (row.getCell(9) != null){
quChannel.setCreateGroup((int) row.getCell(9).getNumericCellValue());
}
if (row.getCell(10) != null){
row.getCell(10).setCellType(XSSFCell.CELL_TYPE_STRING);
quChannel.setRemark(row.getCell(10).getStringCellValue());
}
quChannelMapper.insert(quChannel);
}
}
3.2 review
1.避免将sql写在for循环里面,改进的话可以创建一个列表list,将对象add进去,然后在循环外面进行批量插入
2.想要去重的话可以使用set的不能重复添加特性
3.注意excel的字段与类属性的对应关系,如果excel字段是string,但是累属性是整形的话,可以使用枚举类
暂时想到这么多 欢迎指教评论
springboot批量导入excel数据的更多相关文章
- MySQL批量导入Excel数据
MySQL批量导入Excel数据 1.确定需要导入数据的表名称以及字段,然后在新建的Excel表中,按照表字段正确排序:(注:(Excel文件的名称最好和数据库的名称一致,sheet表的名字最好和表名 ...
- java 使用POI批量导入excel数据
一.定义 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二.所需jar包: 三.简单的一个读取e ...
- 如何批量导入excel数据至数据库(MySql)--工具phpMyAdmin
之前由于数据储存使用excel保存了所有数据,经过初步数据筛选,数据量近4000条.一条一条录入数据库显然是不可行的.以下是我所操作的步骤: 1.只保留excel的数据部分,去除第一行的具体说明 2. ...
- java-poi 批量导入excel数据
1,首先,前端发送MultipartFile类型文件,后端接收 2,分别创建多个ImportParams对象(easypoi),对应工作蒲 注意:pom中 要有相对应的配置 <!-- easyp ...
- 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据
1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...
- MySQL批量导入Excel、txt数据
MySQL批量导入Excel.txt数据 我想Excel是当今最大众化的批量数据管理软件了吧,所以我们会经常涉及到将Excel中数据导入到MySQL中的工作.网上有一些关于直接将Excel导入MySQ ...
- 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程
1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...
- 从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)
今天做项目遇到需要用phpMyAdmin批量导入Excel内容到MySQL数据库.分析了我的踏坑经历并且总结一最便捷的一套导入数据的方法,非常实用简洁: 1.修改Excel表的数据,使得Excel中的 ...
- 【转】从phpMyAdmin批量导入Excel内容到MySQL(亲测非常简洁有效)
今天做项目遇到需要用phpMyAdmin批量导入Excel内容到MySQL数据库.分析了我的踏坑经历并且总结一最便捷的一套导入数据的方法,非常实用简洁: 1.修改Excel表的数据,使得Excel中的 ...
随机推荐
- html网页小图标
<link rel="shortcut icon" href="../image/favicon.ico"/>
- Spring源码分析_01_ idea搭建spring源码阅读环境
二.参考资料 1.Intellij Idea如何导入spring源码
- 【Caffe】Ubuntu 安装 Caffe gpu版
安装环境:Ubuntu 16.04lts 64位, gcc5.4 gpu1050ti,cuda8.0,cudnn5.1.10 1. 安装依赖库 sudo apt-get install libprot ...
- Python的几种版本的不同实现
Python自身作为一门编程语言,它有多种实现.这里的实现指的是符合Python语言规范的Python解释程序以及标准库等.这些实现虽然实现的是同一种语言,但是彼此之间,特别是与CPython之间还是 ...
- navicat导入sql文件
Hello,大家好.Navicat是我们平时使用较多的一个数据库客户端工具,平时小天我主要是用来连接mysql的,使用的时候还是很方便的. 今天小天我就给大家分享一个Navicat如何导入导出sql文 ...
- import module, from module import funtion区别
import module与from module import funtion区别: import module导入模块后你需要使用module.function()来调用一个函数 from mod ...
- SpringMvc之参数绑定注解详解之四
简介: @RequestBody 作用: i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对 ...
- Windows部署jenkins服务器
本次使用的操作系统: windows server 2012 r2vs版本: vs 2015jenkins: 2.19.4 一.下载jenkins http://mirror.xmission.com ...
- 关于 sklearn.decomposition.KernelPCA的简单介绍
from sklearn import decomposition import numpy as np A1_mean = [1, 1] A1_cov = [[2, .99], [1, 1]] A1 ...
- kvm ip查看
1.virsh --list(查看有哪些服务器) 2.virsh dumpxml 虚拟机名称 查看服务器对应的mac地址 3.然后再宿主机上arp -a 查看对应的mac地址对应的ip