首先导入Excel数据需要几样东西

第一需要两个依赖包,这里直接是在pom注入依赖

<!--excel-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>

第二就是需要一个工具类,就和分页的工具类一个性质,这里就不贴出来了太长 。百度搜索 “ExcelUtil”

代码中用到的js文件 jquery-3.1.1.min.js、layer.js

下面开始贴js代码

          //h5的话,写一个文件域就好了  
      //上传Excel文件
        uploadFile() {
var file = $("#upload").val();
file = file.substring(file.lastIndexOf('.'), file.length);
if (file == '') {
layer.open({
content: '上传文件不能为空!'
, skin: 'msg'
, time: 2 //2秒后自动关闭
});
} else if (file != '.xlsx' && file != '.xls') {
layer.open({
content: '请选择正确的excel类型文件!'
, skin: 'msg'
, time: 2 //2秒后自动关闭
});
} else {
this.ajaxFileUpload();
}
},
ajaxFileUpload() {
var formData = new FormData();
formData.append("file", document.getElementById("upload").files[0]);
$.ajax({
url: "${ctx}/bookcase/InputExcel",
type: "POST",
async: true,
data: formData,
processData: false,
contentType: false,
beforeSend: function () {
layer.open({
type: 2
, content: '文件上传中,请稍候'
});
},
success: function (data) {
layer.closeAll();
data = JSON.parse(data);
if (data.state == 200) {
layer.open({
content: data.message
, skin: 'msg'
, time: 1 //2秒后自动关闭
});
window.location.reload();
} else {
layer.open({
content: data.message
, skin: 'msg'
, time: 2 //2秒后自动关闭
});
}
}
});
}
},

到这里页面的的操作就差不多了,下面是java的操作

@RequestMapping("InputExcel")
@ResponseBody
public ResultEntity InputExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
ResultEntity result = new ResultEntity();
if (!file.isEmpty()) {
try {
//获取原始的文件名
String originalFilename = file.getOriginalFilename();
String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
//默认从第一行开始读取
Integer startRows = 1;
//获取输入流
InputStream is = file.getInputStream();
List<DoorAntRel> bindingList = new ArrayList<>();
List<Bookcase> bookcaseList = new ArrayList<>();
List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);//这里使用输入流把数据拿到
//遍历Excel表每一行的数据
for (String[] str : strings) {//这里比较特殊,肯定有更简便的办法,暂时我就只有这个水平、、、尴尬
Bookcase bookcase = new Bookcase();
DoorAntRel doorAntRel = new DoorAntRel();
bookcase.setName(str[1]);
bookcase.setType(str[2]);
bookcase.setCom(Integer.parseInt(str[3]));
doorAntRel.setDoorName(str[4]);
doorAntRel.setDoorNo(Integer.parseInt(str[5]));
doorAntRel.setAntennaNo(Integer.parseInt(str[6]));
doorAntRel.setReadWriterId(Integer.parseInt(str[7]));
doorAntRel.setBookcaseId(Integer.parseInt(str[8]));
doorAntRel.setBadFlag(Integer.parseInt(str[9]));
doorAntRel.setDoorSlot(Integer.parseInt(str[10]));
bindingList.add(doorAntRel);
bookcaseList.add(bookcase);
}
boolean bookState = bookcaseService.insertOrUpdateBatch(bookcaseList);
boolean doorState = doorAntRelService.insertOrUpdateBatch(bindingList);
if(bookState){
if(doorState){
result.setState(HttpCode.SUCCESS);
result.setMessage("上传文件成功!");
return result;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
result.setState(HttpCode.FAILED);
result.setMessage("上传文件失败!");
return result;
}

到这里差不多导入功能就差不多了,包括业务层、数据访问的接口我就不写了,也就是一条insert的事情

java导入Excel表格数据的更多相关文章

  1. JAVA处理Excel表格数据并写入数据库

    package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...

  2. Vue3实现动态导入Excel表格数据

    1.  前言 在开发工作过程中,我们会遇到各种各样的表格数据导入,大部分我们的解决方案:提供一个模板前端进行下载,然后按照这个模板要求进行数据填充,最后上传导入,这是其中一种解决方案.个人认为还有另外 ...

  3. tp3.2和Bootstrap模态框导入excel表格数据

    导入按钮 <button class="btn btn-info" type="button" id="import" data-to ...

  4. poi导入excel表格数据到数据库的时候,对出生日期的校验

    出生日期格式为8位数字的字符串 如:yyyyMMdd 规则:yyyy大于1900并小于当前时间,月.日 按日期规则校验 //解决读过来的字符串显示为科学计数法问题 BigDecimal bd = ne ...

  5. 用多线程优化Excel表格数据导入校验的接口

    公司的需求,当前某个Excel导入功能,流程是:读取Excel数据,传入后台校验每一条数据,判断是否符合导入要求,返回给前端,导入预览展示.(前端等待响应,难点).用户再点击导入按钮,进行异步导入(前 ...

  6. java实现excel表格导入数据库表

    导入excel就是一个上传excel文件,然后获取excel文件数据,然后处理数据并插入到数据库的过程 一.上传excel 前端jsp页面,我的是index.jsp 在页面中我自己加入了一个下载上传文 ...

  7. 将包含经纬度点位信息的Excel表格数据导入到ArcMap中并输出成shapefile

    将包含经纬信息的Excel表格数据,导入到ArcMap中并输出成shapefile,再进行后面的操作.使用这种方法可以将每一个包含经纬信息的数据在ArcMap中点出来. 一.准备数据 新建Excel表 ...

  8. Excel表格数据导入MySQL数据库

    有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下: 1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直 ...

  9. Java操作Jxl实现导出数据生成Excel表格数据文件

    实现:前台用的框架是Easyui+Bootstrap结合使用,需要引入相应的Js.Css文件.页面:Jsp.拦截请求:Servlet.逻辑处理:ClassBean.数据库:SQLserver. 注意: ...

随机推荐

  1. 洛谷 - P2283 - 多边形 - 半平面交

    https://www.luogu.org/problemnew/show/P2283 需要注意max是求解顺序是从右到左,最好保证安全每次都清空就没问题了. #include<bits/std ...

  2. MFC CMap整理

    映射表类(CMap)是MFC集合类中的一个模板类,也称作为“字典”.CMap是把唯一关键码映射到值的字典收集类,使用CMap可以构造一个关键字和元素值映射的集合类.一旦在映射中插入了一个关键码值对(元 ...

  3. Unity学习(六)5.x依赖打包

    http://blog.sina.com.cn/s/blog_89d90b7c0102w2ox.html unity5已经封装好了接口,所以依赖打包并没有那么神秘和复杂了. 打包: 1.定义好资源的a ...

  4. java string(转)

    初探Java字符串 优化变成了忧患:String.split引发的“内存泄露” String是java中的无处不在的类,使用也很简单.初学java,就已经有字符串是不可变的盖棺定论,解释通常是:它是f ...

  5. luoguP2408不同子串个数

    传送门 可以知道每一个子串都是后缀的前缀,那么对于第\(i\)小的后缀的贡献就可以表示为n-sa[i]+1 然而会存在重复的子串,注意height数组的定义,对于sa[i-1]和sa[i],只有hei ...

  6. day03 System Math

  7. Centos7安装与配置domain模式wildfly(默认配置)

    (1)安装与配置JDK8 1)使用wget下载JDK8: wget --no-check-certificate --no-cookies --header "Cookie: oraclel ...

  8. java操作rabbitmq实现简单的消息发送(socket编程的升级)

    准备: 1.下载rabbitmq并搭建环境(和python那篇一样:http://www.cnblogs.com/g177w/p/8176797.html) 2.下载支持的jar包(http://re ...

  9. 104 Maximum Depth of Binary Tree 二叉树的最大深度

    给定一个二叉树,找出其最大深度.二叉树的深度为根节点到最远叶节点的最长路径上的节点数.案例:给出二叉树 [3,9,20,null,null,15,7],    3   / \  9  20    /  ...

  10. json数据有换行符时提交不成功的坑

    这是在有多行文本框表单提交时遇到的问题.. 整理所有的表达数据,合并到一个json中然后jsonp方式提交给后端时,发现只要有换行符,总是提交失败. 目前的解决办法就是在合并数据的时候把换行\n替换为 ...