zoukankan      html  css  js  c++  java
  • Excel导入数据库前后端代码

    1、前端页面:

    <div id="div1" style="float: left; margin-right: 50px;">
    <input id="articleImageFile" name="excelFile" type="file" style=" 300px; display: inline;" />
    <input id="saveZipButton" type="button" style=" 60px;height: 35px;" value="上传" />
    </div>

    2、js:

    $(document).ready(function() {

    // 点击上传按钮保存excel
    $("#saveZipButton").click(function() {
    // 2020 新excel导入数据库事件
    newreport();
    });

    });

    // 2020 导入excel文件
    function newreport() {
    var fileName = $("#articleImageFile").val();
    if (fileName == null || fileName == "") {
    alert("请选择文件");
    } else {
    var fileType = fileName.substr(fileName.length - 4, fileName.length);
    if (fileType == ".xls" || fileType == "xlsx") {

    var formData = new FormData();
    var name = $("#articleImageFile").val();
    formData.append("file", $("#articleImageFile")[0].files[0]);
    formData.append("name", name);// 这个地方可以传递多个参数
    $.ajax({
    url : getContextPathInfo() + "/execImport/upload",
    type : 'POST',
    async : false,
    data : formData,
    // 告诉jQuery不要去处理发送的数据
    processData : false,
    // 告诉jQuery不要去设置Content-Type请求头
    contentType : false,
    beforeSend : function() {
    console.log("正在进行,请稍候");
    },
    success : function(json) {
    var checkYwState = false;
    console.info("OnSuccess_NonNeedOpe_del方法");
    if (typeof (json) == "object") {
    if (json.resulttype == "SUCCESS") {
    alert("Excel导入数据成功");
    nsearch();
    var deldm = json.appenddata.dm;
    } else {
    alert("Excel导入数据出现错误");
    return false;
    }
    } else {
    alert("Excel导入数据出现异常");
    return false;
    }
    // if (responseStr == "1") {
    // alert("导入成功");
    // } else {
    // alert("导入失败");
    // }
    },
    error : function(json){
    alert("导入报错");
    }
    });
    }else {
    alert("上传文件类型错误!");
    }
    }
    };

    3、后台java:

    ①、控制层

    //excel导入
    @RequestMapping(value = "/upload" , method = RequestMethod.POST)
    @ResponseBody
    @Log(module = "车辆信息Excel表导入",operation = "新增")
    public OperationResult export(@RequestParam("file") MultipartFile file,
    HttpServletRequest request, HttpServletResponse response) {
    Integer iscuccess = 0;
    OperationResult result = new OperationResult(OperationResultTypeEnum.ERROR, "作废记录失败");
    try {
    // @RequestParam("file") MultipartFile file 是用来接收前端传递过来的文件
    // 1.创建workbook对象,读取整个文档
    InputStream inputStream = file.getInputStream();
    POIFSFileSystem poifsFileSystem = new POIFSFileSystem(inputStream);
    HSSFWorkbook wb = new HSSFWorkbook(poifsFileSystem);
    // 2.读取页脚sheet
    HSSFSheet sheetAt = wb.getSheetAt(0);
    List<Zbclbaseinfob> zbclbaseinfobLst = new ArrayList<Zbclbaseinfob>();//用来装车辆实体的list
    //*********************从第二行开始的excel导入(已成功)*******************
    for(int rowNum = 1;rowNum <= sheetAt.getLastRowNum(); rowNum++ ){//从第二行开始取值(即rowNum=1开始)
    //创建车辆实体对象
    Zbclbaseinfob clEntity = new Zbclbaseinfob();
    HSSFRow xssfRow = sheetAt.getRow(rowNum);
    // 4.读取每一行的单元格
    String stringCellValue = xssfRow.getCell(0).getStringCellValue(); // 第一列数据
    String stringCellValue2 = xssfRow.getCell(1).getStringCellValue();// 第二列
    clEntity.setDm(UUID.randomUUID().toString());//生成随机主键
    clEntity.setClbh(stringCellValue);//给车辆编号赋值
    clEntity.setCph(stringCellValue2);//给车牌号赋值
    // 写多少个具体看大家上传的文件有多少列.....
    zbclbaseinfobLst.add(clEntity);//
    // execImportService.saveClExcel(clEntity);//循环去业务层单条保存车辆
    // 测试是否读取到数据,及数据的正确性
    //System.out.println(stringCellValue);
    }
    // execImportService.manyClSave(zbclbaseinfobLst);//saveAll车辆表list去业务层保存
    iscuccess = execImportService.manyClSave(zbclbaseinfobLst);//saveAll车辆表list去业务层保存
    if (iscuccess == 1) {
    result.setResulttype(OperationResultTypeEnum.SUCCESS);
    result.setMsg("Excel导入成功");
    } else {
    result.setResulttype(OperationResultTypeEnum.ERROR);
    result.setMsg("Excel导入失败");
    }
    result.setAppenddata(iscuccess);
    return result;

    //*********************从第一行开始的excel导入(已成功)*******************
    // // 3.循环读取某一行
    // for (Row row : sheetAt) {
    // //创建车辆实体对象
    // Zbclbaseinfob clEntity = new Zbclbaseinfob();
    // // 4.读取每一行的单元格
    // String stringCellValue = row.getCell(0).getStringCellValue(); // 第一列数据
    // String stringCellValue2 = row.getCell(1).getStringCellValue();// 第二列
    // clEntity.setDm(UUID.randomUUID().toString());//生成随机主键
    // clEntity.setClbh(stringCellValue);//给车辆编号赋值
    // clEntity.setCph(stringCellValue2);//给车牌号赋值
    // // 写多少个具体看大家上传的文件有多少列.....
    // execImportService.saveClExcel(clEntity);
    // // 测试是否读取到数据,及数据的正确性
    // //System.out.println(stringCellValue);
    // }
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();//若一段代码前有异常抛出,并且这个异常被try...catch所捕获,若此时catch语句中没有抛出新的异常,则这段代码能够被执行
    result.setResulttype(OperationResultTypeEnum.ERROR);
    result.setMsg("Excel导入失败");
    return result;
    }

    }

    ②、service层

    //excel转换的存实体的list的saveAll
    public Integer manyClSave(List<Zbclbaseinfob> zbclbaseinfobLst) {
    zbclbaseinfobDao.saveAll(zbclbaseinfobLst);
    return 1;

    }

  • 相关阅读:
    PID算法控制直流电机笔记
    HAL库直流电机编码测速(L298N驱动)笔记
    HAl库控制L298N直流电机旋转笔记
    MQTT介绍与使用(转载)
    STM32中STD、HAL、LL库比较
    rpm检验是否被改动过
    find命令 参数
    会话管理测试时的注意点
    无权限修改用户组权限的状况一
    burpsuite + sqlmap 日志导出批量扫描
  • 原文地址:https://www.cnblogs.com/xyg34/p/12620629.html
Copyright © 2011-2022 走看看