• java导入Excel表格数据


    首先导入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的事情

  • 相关阅读:
    2020年4月13日
    2021年4月12日
    梦断代码阅读笔记02
    Shell基本命令
    远程链接Linux
    Linux文档与目录结构
    VMware与Centos系统安装
    linux 第一天
    day88 Vue基础
    python 生成随机验证码
  • 原文地址:https://www.cnblogs.com/yyKong/p/10869541.html
Copyright © 2020-2023  润新知