首先导入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. Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

    一.前言 Job for mysqld.service failed because the control process exited with error code. See "sys ...

  2. Jmeter + Junit

    在使用jmeter中Junit的功能之前,最好将接口以手动的方式调通,可以参考 Jmeter之HTTP Request 下面开始讲一下如何使用Junit功能 1.  编写测试类 JmeterJunit ...

  3. 每次打开office 2013都提示配置进度,必须得等他下完然后重启,重启完了在打开,还是提示配置进度,怎么解决

    方法一: 我用下面的方法完美解决.在控制面板中1.删除旧版本2010 或者20032.删除激活程序3.重装2013激活程序done 方法二: 我把WPS卸载了就好了. 方法三: 我是按这个方法解决的, ...

  4. HDU2604【矩阵快速幂】

    思路: 把fm看成01,f-1,m-0: 不能存在101,111; dp[i]代表第i结尾的方案数: ①:结尾是0一定行:只要i-1序列里添个0就好了,dp[i]+=dp[i-1]: ②:结尾是1   ...

  5. 多线程 NSThread 了解

    用NSThread创建子线程的3种方法   //  DYFViewController.m //  623-02-pthread // //  Created by dyf on 14-6-23. / ...

  6. Rsync备份同步数据工具

    Rsync  is  a  fast and extraordinarily versatile file copying tool. Rsync是一款开源的,快速的,多功能的,可实现全量和增量的本地 ...

  7. TopJUI通过简单的代码实现复杂的批量提交功能

    业务系统的批量提交是常用的操作功能,使用传统的EasyUI开发时需要写不少代码才能实现,该功能在TopJUI中是如何实现的呢?本篇我们将通过简单的代码,把批量操作的具体实现分享给大家参考. <a ...

  8. C - Heavy Transportation

    //改版dijkstra #include <iostream> #include <algorithm> #define Faster ios::sync_with_stdi ...

  9. sql server之exists用法

  10. python 基础(四) 函数

    函数 一.什么是函数? 函数是可以实现一些特定功能的 小方法 或者是小程序 优点: 提高 了代码的后期维护 增加了代码的重复使用率 减少了代码量 提高了代码可读性 二.函数的定义 使用 def关键+函 ...