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

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

  1. <!--excel-->
  2. <dependency>
  3. <groupId>org.apache.poi</groupId>
  4. <artifactId>poi</artifactId>
  5. <version>3.10.1</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.poi</groupId>
  9. <artifactId>poi-ooxml</artifactId>
  10. <version>3.9</version>
  11. </dependency>

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

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

下面开始贴js代码

  1. //h5的话,写一个文件域就好了
          //上传Excel文件
            uploadFile() {
  2. var file = $("#upload").val();
  3. file = file.substring(file.lastIndexOf('.'), file.length);
  4. if (file == '') {
  5. layer.open({
  6. content: '上传文件不能为空!'
  7. , skin: 'msg'
  8. , time: 2 //2秒后自动关闭
  9. });
  10. } else if (file != '.xlsx' && file != '.xls') {
  11. layer.open({
  12. content: '请选择正确的excel类型文件!'
  13. , skin: 'msg'
  14. , time: 2 //2秒后自动关闭
  15. });
  16. } else {
  17. this.ajaxFileUpload();
  18. }
  19. },
  20. ajaxFileUpload() {
  21. var formData = new FormData();
  22. formData.append("file", document.getElementById("upload").files[0]);
  23. $.ajax({
  24. url: "${ctx}/bookcase/InputExcel",
  25. type: "POST",
  26. async: true,
  27. data: formData,
  28. processData: false,
  29. contentType: false,
  30. beforeSend: function () {
  31. layer.open({
  32. type: 2
  33. , content: '文件上传中,请稍候'
  34. });
  35. },
  36. success: function (data) {
  37. layer.closeAll();
  38. data = JSON.parse(data);
  39. if (data.state == 200) {
  40. layer.open({
  41. content: data.message
  42. , skin: 'msg'
  43. , time: 1 //2秒后自动关闭
  44. });
  45. window.location.reload();
  46. } else {
  47. layer.open({
  48. content: data.message
  49. , skin: 'msg'
  50. , time: 2 //2秒后自动关闭
  51. });
  52. }
  53. }
  54. });
  55. }
  56. },

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

  1. @RequestMapping("InputExcel")
  2. @ResponseBody
  3. public ResultEntity InputExcel(@RequestParam("file") MultipartFile file, HttpServletRequest request) {
  4. ResultEntity result = new ResultEntity();
  5. if (!file.isEmpty()) {
  6. try {
  7. //获取原始的文件名
  8. String originalFilename = file.getOriginalFilename();
  9. String fileType = originalFilename.substring(originalFilename.lastIndexOf(".") + 1, originalFilename.length());
  10. //默认从第一行开始读取
  11. Integer startRows = 1;
  12. //获取输入流
  13. InputStream is = file.getInputStream();
  14. List<DoorAntRel> bindingList = new ArrayList<>();
  15. List<Bookcase> bookcaseList = new ArrayList<>();
  16. List<String[]> strings = ExcelUtil.readData(fileType, startRows, true, is);//这里使用输入流把数据拿到
  17. //遍历Excel表每一行的数据
  18. for (String[] str : strings) {//这里比较特殊,肯定有更简便的办法,暂时我就只有这个水平、、、尴尬
  19. Bookcase bookcase = new Bookcase();
  20. DoorAntRel doorAntRel = new DoorAntRel();
  21. bookcase.setName(str[1]);
  22. bookcase.setType(str[2]);
  23. bookcase.setCom(Integer.parseInt(str[3]));
  24. doorAntRel.setDoorName(str[4]);
  25. doorAntRel.setDoorNo(Integer.parseInt(str[5]));
  26. doorAntRel.setAntennaNo(Integer.parseInt(str[6]));
  27. doorAntRel.setReadWriterId(Integer.parseInt(str[7]));
  28. doorAntRel.setBookcaseId(Integer.parseInt(str[8]));
  29. doorAntRel.setBadFlag(Integer.parseInt(str[9]));
  30. doorAntRel.setDoorSlot(Integer.parseInt(str[10]));
  31. bindingList.add(doorAntRel);
  32. bookcaseList.add(bookcase);
  33. }
  34. boolean bookState = bookcaseService.insertOrUpdateBatch(bookcaseList);
  35. boolean doorState = doorAntRelService.insertOrUpdateBatch(bindingList);
  36. if(bookState){
  37. if(doorState){
  38. result.setState(HttpCode.SUCCESS);
  39. result.setMessage("上传文件成功!");
  40. return result;
  41. }
  42. }
  43. } catch (IOException e) {
  44. e.printStackTrace();
  45. }
  46. }
  47. result.setState(HttpCode.FAILED);
  48. result.setMessage("上传文件失败!");
  49. return result;
  50. }

到这里差不多导入功能就差不多了,包括业务层、数据访问的接口我就不写了,也就是一条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. java8--List转为Map、分组、过滤、求和等操作

    利用java8新特性,可以用简洁高效的代码来实现一些数据处理~ 定义1个Apple对象: public class Apple { private Integer id; private String ...

  2. 梦工厂实验室 蛇形填数 dfs

    问题 D: 蛇形填数 时间限制: 3 Sec  内存限制: 64 MB提交: 28  解决: 5[提交][状态][讨论版] 题目描述 在n*n方阵里填入1,2,...,n*n,要求填成蛇形.例如n=4 ...

  3. 宝塔Linux 8888 进不去

    一.前言 导致该问题的原因是 Python 版本问题,可能是您更新了 python 的问题.参考宝塔问题的解决方案做的小结.仅供自己做笔记,不作其他用途. 二.解决方案 1.进入shell 命令行,输 ...

  4. ThinkPHP3.2.3学习笔记5---模板(一)

    一.模板简介 此文中的学习笔记部分资料是来自于thinkphp官方文档,http://document.thinkphp.cn/manual_3_2.html#template 本章的内容主要讲述了如 ...

  5. C#、Unity网络通信中基于字节码的自定义协议解码,C#版ByteBuffer

    http://www.oschina.net/code/snippet_42170_37516 C#.Unity基于字节的网络通信中字节码解析类,类似java中的ByteBuffer,不过这个实现是参 ...

  6. Codevs 1569 最佳绿草

    1569 最佳绿草  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 贝茜正计划着这一天如何美美地咀嚼春天的绿 ...

  7. 聪明的质监员(codevs 1138)

    题目描述 Description 小 T 是一名质量监督员,最近负责检验一批矿产的质量.这批矿产共有n 个矿石,从1到n 逐一编号,每个矿石都有自己的重量wi 以及价值vi.检验矿产的流程是:见图   ...

  8. sql server之exists用法

  9. Codeforces 1132D(二分模拟)

    要点 二分显然,关键在于怎么判断 题解方法:开k个队列代表每个时间有哪些电脑会挂掉,这部分O(n)预处理一下,之后扫一遍时间,每个时间点贪心选取最靠前的会挂的电脑未雨绸缪给它充电,然后看看充电以后要不 ...

  10. ZJOI2017 day2 T2 线段树 想法题

    考完D2发现自己简直zz了...花式扔基本分 首先这道题有个显然的套路:树上一些点到一个定点的距离和=这些点深度和+点数*定点深度和-2*lca深度和 ——上一次见这个套路是LNOI2014,上次做的 ...