easyexcel导入固定sheet_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,但是累属性是整形的话,可以使用枚举类
暂时想到这么多 欢迎指教评论
easyexcel导入固定sheet_springboot批量导入excel数据相关推荐
- python处理大量excel数据-python如何批量处理excel数据?
python如何批量处理excel数据? python批量处理excel数据的方法: excel的内容需要有规律,python才能按顺序读取出来. 比如按行按列读取. 一.安装xlrd模块 到pyth ...
- python怎么批量处理数据_python如何批量处理excel数据?_后端开发
php赋值运算符有哪些_后端开发 php赋值运算符有:1.[=]赋值运算符:2.[+=]加运算符:3.[-=]减运算符:4.[*=]乘运算符:5.[/=]除运算符:6.[.=]连接字符运算符:7.[% ...
- 利用Pajek软件批量处理excel数据,批量生成网络关系图
利用Pajek软件批量处理excel数据,批量生成网络关系图 Pajek软件大家想必都不陌生,但是我很陌生,因为我用它不是进行网络分析,而是用它来画关系图(类似网络图).但是Pajek软件手工操作时一 ...
- Python 批量处理 Excel 数据后,导入 SQL Server
作者 | 老表 来源 | 简说Python 1.前言 2.开始动手动脑 2.1 拆解+明确需求 2.2 安装第三方包 2.3 读取excel数据 2.4 特殊数据数据处理 2.5 其他需求 2.6 完 ...
- Python批量处理Excel数据后,导入SQL Server
1.前言 2.开始动手动脑 2.1 拆解+明确需求 2.2 安装第三方包 2.3 读取excel数据 2.4 特殊数据数据处理 2.5 其他需求 2.6 完整调用代码 3.后言后语 1.前言 今天我们 ...
- python将excel数据导入ppt_使用python将excel数据导入数据库
因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接丢代码,使用python3,注释比较清楚. ...
- python批量处理excel数据_Python批量处理Excel,真香(超实用!)
本文介绍了利用Python批量处理Excel文件的一种方法,超实用,超简单.轻松可实现,节省时间不只一点点.文章不长,功能超强. 上菜. 某一天,老板丢个我一个任务.需要将400多张表按照一定条件进行 ...
- Java - 批量录入Excel数据优化 (一)
1.前言 相信批量导入功能在许多应用场景都会使用到.本人在做一次公司需求时,因为需要校验Excel数据唯一性,所以代码变成了这样 for (BlackListInfoExcelDTO excelDTO ...
- oracle物料 批量导入,3.9批量导入一揽子采购协议
3.9.1 业务方案描述 一揽子采购协议可以手工维护,也可以批量导入,批量导入一揽子采购协议的功能,以提高价格维护的效率. 采购一揽子协议是区分OU的,不同OU的采购协议需要单独维护. 批量导入一 ...
- bartender外部表不是预期格式_批量合并Excel数据时“外部表不是预期格式”或“文件包含损坏数据”的两种情况...
很多朋友在用Power Query合并(汇总)Excel数据时,碰到过"DataFormat.Error:外部表不是预期格式"或"DataFormat.Error:文件包 ...
最新文章
- python营销骗局_python案例:金融营销活动中欺诈用户行为分析
- matlab 降低维度,求助。。。matlab索引超出维度要怎么修改。。。谢谢
- 新闻频道管理的炫酷实现
- 所谓的Dumb Question
- css笔记——css 实现自定义按钮
- eureka注册中心HA集群搭建
- VirtualBox 安装 Linux 时遇到的问题及解决办法
- 通过 Azure 媒体管理门户开始使用直播流媒体
- 基于气象站点气象数据的空间插值
- 【系统分析师】考试内容大纲内容
- stm32 薄膜键盘原理_stm32F4----薄膜4*4矩阵键盘读取(七)
- 厘米换算英尺英寸java
- unity抗锯齿关闭
- java调用录像_java调用摄像头拍照录像
- A调用B方法,@Transactional事务失效情况
- 使用股指期货与ETF基金进行期现套利
- spring注入sessionfactory
- 苹果邮箱登录入口_电子邮箱的申请及使用说明
- omf多路径 oracle_ORACLE OMF
- 如何成为牛逼的程序员
热门文章
- 7.Kong入门与实战 基于Nginx和OpenResty的云原生微服务网关 --- 日志收集与分析
- 13.高性能MySQL --- 云端的MySQL
- 61. 创建快速响应的Web应用
- mysql安装框架_MySQL安装详解图文版(V5.5 For Windows)
- css3中的box-shadow的用法与text-shadow的用法
- js(JavaScript):事件,元素(增删改查)
- js 如何判断数组元素是否存在重复项
- 【Henu ACM Round#18 F】Arthur and Walls
- Python学习之OS模块初识
- POJ 1330 Nearest Common Ancestors(LCA Tarjan算法)