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的事情

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM