前因

最近在做的项目是在线考核平台(目前已经在测试阶段),里面涉及到的业务复杂度很深(公司项目,不便多说),业务逻辑和需求契合度也很高,在开发过程中就遇到了很多很多的问题。
我的计划是在开发结束后把自己遇到的问题全都传到网上,以一种笔记的形式进行共享与记录,希望共同成长、共同进步!

那么闲话少说

需求-导入excel表格,把表格中的数据存到数据库中

这是我开发中遇到的困难之一,由于之前没有遇到过这种excel表格批量上传的需求,所以第一次碰到蒙了一下,转而之后就是兴奋,对未知知识的索取与分析问题的喜悦(都有)
-----以上是我的废话

不比比,上思路、上代码

一.思路

1.上传文件
2.转换base64编码,获取信息
3.获取Sheets中第一个sheets的名字
4.获取关于此名字的数据
5.转换成json数据
6.ajax接受数据传入后台
7.进行数据的批量插入
二.代码

前台

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>js导入excel</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
</head>
<body><input type="file"onchange="importf(this)" />按钮<script src="../../css/EXCELE/xlsx.full.min.js"></script>
<script src="../../css/EXCELE/jquery.js"></script>
<script src="../../css/EXCELE/xlsx.core.min.js"></script>
<script>var wb;//读取var rABS = false;//开始导入function importf(obj) {if(!obj.files) {return;}var f = obj.files[0];var reader = new FileReader();reader.onload = function(e) {var data = e.target.result;if(rABS) {wb = XLSX.read(btoa(fixdata(data)), {//手动转化type: 'base64'});} else {wb = XLSX.read(data, {type: 'binary'});}/*** wb.SheetNames[0]是获取Sheets中第一个Sheet的名字* wb.Sheets[Sheet名]获取第一个Sheet的数据*/var excelJson = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);$.ajax({url: "/Login/oneinput",type: "POST",dataType: "json",contentType:"application/json",data: JSON.stringify( excelJson ),success: function (data) {alert("上传成功,您上传的单选题中有"+data+"题是重复的!")window.location.reload();//页面刷新}});};if(rABS) {reader.readAsArrayBuffer(f);} else {reader.readAsBinaryString(f);}}//文件流转BinaryStringfunction fixdata(data) {var o = "",l = 0,w = 10240;for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w +w)));o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));return o;}
</script>
</body>
</html>

后台

//批量导入 单选@PostMapping("/oneinput")public int oneinput(@RequestBody List<DXPOJO>  xuanZePojos) {if(session.getAttribute("phone")==null){return 0;}return loginService.oneinput(xuanZePojos);}

3.注意

以上代码是实现批量上传excex的全部代码有几点需要注意
1.你需要建立一个实体类用来响应页面传来的信息,实体类中的属性名需要与excel表中的列名对应,不可以不同,否则会接到null值
2.接到的数据格式是List<Object>的格式,前台格式为json格式,在ajax请求头需要添加

  dataType: "json",contentType:"application/json",

否则报错
3.在上传的excel中不允许有多个表单
例:

不可以这样,数据会乱掉,一定注意
4.不可以有串行
5.不可以有不必要的备注
例:

这样的在里面,怎么分类,怎么搞?你不炸谁炸!
6.只允许留下列名和数据,其他的合并单元格一类的名不可以存在
例:

第二行是对的,第一行必须删除

4.需要的包有
地址:这里

上传excel表格批量插入到数据库相关推荐

  1. springboot上传excel表格到数据库

    1.引入相关poi依赖 <dependency><groupId>org.apache.poi</groupId><artifactId>poi< ...

  2. 【Vue】vue2上传Excel表格到后台 实战教程(接上一篇下载Excel模板表格到本地)

    参考文章 作者原文链接入口 项目场景: 关于数据新增,需要从后台下载一个Excel表格,然后在表格里面添加数据,再上传给后台,后台做解析处理,往数据库添加数据 问题描述 需要用到elementUI的文 ...

  3. laravel-admin / Dcat admin 上传Excel并导入数据到数据库

    准备工作 安装maatwebsite/excel composer require maatwebsite/excel laravel-admin 效果图 创建按钮 $grid->tools(f ...

  4. 自己做项目时整理的上传Excel表格

    Thinkphp5实现导入excel表格 (1)下载PHPExcel-1.7.7(jb51.net) 插件 (2)将其下的Classes 解压到框架vendor文件夹下并进行重命名 (3)前端代码 ( ...

  5. VFPBS上传EXCEL并保存MSSQL到数据库中

    开发环境 后端:VFP SP2 7423 +祺佑三层开发框架(猫框) 前端:VUE2.0+Element 思路 实现BS上传 就是利用猫框的importexcel类将EXCEL文件转换为临时表, 将临 ...

  6. 前端 js 上传excel表格、文件

    一.场景 产品给了个设计图,需要点击[自定义]图标或者其他图片来完成上传的动作.(打开选择文件弹窗,并选择文件) 思路:利用 input-type 的 "file" 属性来完成. ...

  7. 微信公众号怎样上传excel表格?

    通过 微附件 小程序,可以在微信公众号上传excel文件,推送excel文件. 第一步:将附件上传到"微附件"小程序,或官方网站,这里只演示上传到官网的. 第二步:在微信公众号后台 ...

  8. vue excel导入mysql详细教程_Vue前端上传EXCEL文件,后端(springBoot+MyBatis+MySQL)解析EXCEL并批量插入/更新数据库...

    文章目录 Vue前端 后端 controller层 service层:如何解析Excel文件 MyBatis:实现批量插入 在mysql中设置唯一索引Unique Index MySQL中的inser ...

  9. 【总结】C#上传excel文件到Sql server数据库

    工具 :  VS2015 + SQL Server 2008 R2 框架:三层+一般处理程序 方法:方法很多种,百度千奇百怪,总结下来更好更快的方法,以下会提到 最近接触到需要实现将一个excel表格 ...

最新文章

  1. spring cloud alibaba版本选择
  2. JavaScript函数大全
  3. 一文解读苹果 M1 芯片电脑上的开源软件
  4. 不用CMake编译查询OpenCV函数、类定义等的方法(全文搜索-所有文档搜索指定内容神器:CJC超级硬盘快搜索和AnyTXT Searcher)
  5. 冰雪奇缘,白色世界:四个IT人的四姑娘山双桥沟游记
  6. tcp的发送端一个小包就能打破对端的delay_ack么?
  7. success.ftlh与error.ftlh
  8. Spring Boot + JPA +MySQL 数据操作及示例环境搭建(自动建表)
  9. css中的伪类 之 first-child
  10. 试题3 基础练习 数列排序
  11. Zabbix Database error
  12. 基于惯性轮倒立摆原理的自行车
  13. C 语言实现 - 判断元音/辅音
  14. IDEA使用技巧 - 修改项目名称和模块名称
  15. HTML圆和圆角柜形的制作,圆角柜是典型的明式家具,详细解析圆角柜的智慧法则...
  16. 语法错误与语义错误(所有语言通用版)
  17. 北京小程序外包开发服务
  18. 如何制作一个漂亮的二维码 QRBTF
  19. C# 使用反射获取私有属性的方法
  20. 【愚公系列】华为云轻应用之手把手教你用搭一个WeLink上的出差应用丨【AppCube X WeLink双剑合璧】

热门文章

  1. 嵌入式编程中的多任务与单任务,以及单任务的软件设计流程
  2. C#大作业——回合制游戏模拟
  3. likeadmin官网可算上线了,让我们看看吧
  4. 三大地图,通过url获取网页定位嵌套在iframe中展示
  5. rapidjson 遇到的吭
  6. 【新手基础教程】SP-MOD之 Lcd1.14 IPS屏 的使用
  7. python读取.mtx文件
  8. ()文献可视化--vosviewer入门
  9. Linux系统中如何彻底隐藏一个TCP连接?
  10. visio基于线条绘制图像,并填充。