Java代码将excel数据导入到数据库的接口

这是一个关于前端页面展示Excel导入功能和后端接口处理上传文件的示例。前端代码展示了如何通过HTML和JavaScript实现文件上传,并触发后台接口进行数据验证和处理。后端接口使用了Spring MVC,接收MultipartFile类型参数,读取Excel内容,并将数据存入数据库。
摘要由CSDN通过智能技术生成

 

导入excel的前端页面代码:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="utf-8">
    <title>上传监控人员</title>
    <th:block th:include="fragments/headerinc :: head"></th:block>
    <link rel="stylesheet" th:href="@{/content/home/css/stable.ui.css}">
    <script th:src="@{/content/util/jquery/jquery.form.js}" ></script>
  </head>
  <body class="pop-body">
     <div class="pop">
     <div class="pop-content">
        <div class="box-center">
            <div class="nav-tabs-custom nav-main">
                <tr>                
                    <td align="left" colspan="3" >
                        <br/>
                        <a th:href="@{/content/home/excel/zdjkrydr.xls}"><font color="red">【导入模板下载】</font></a>
                        <br/>
                    </td>
                   </tr>
                   <form role="form" class="form-horizontal" id="importform"  method="post" enctype="multipart/form-data" 
                       th:action= http://localhost:8082/sys/user/importExcel >
                      <div>
                      <td>批量导入数据:</td><br/>
                      <input type="file" class="form-control" name="Identity" id="Identity" style="height: 50px;"/>        
                      <input type="hidden" name="personType" value="0"/>
                      <input type = 'submit'>
                    </div>                     
                </form>
            </div>
        </div>
    </div>
    </div>
    <script type="text/javascript" th:inline="javascript">
          //导入上传
        function test(){
            if ($("#Identity").val() == "") {
                alert("请上传文档!");
                return false;
            }
            if (!$("#Identity").val() == "") {
                $("#importform").ajaxSubmit(function(data){
                    if(data.aa == 1){
                        var msg = "已有" + data.result1 + "的电话号码!";
                        layer.msg(msg, {icon: 2});
                        return 1;
                    }else if(data.aa == 2){
                        var msg = "手机号不能为空!";
                        layer.msg(msg, {icon: 2});
                        return 2;
                    }else{
                        var index=parent.layer.getFrameIndex(window.name);
                        parent.layer.msg('保存成功!', {icon: 1});
                        parent.layer.close(index);
                        return 0;
                    }
                })
            }
        }
    </script>
  </body>
</html>

后端接口代码:

@RequestMapping(value = "importExcel", method = RequestMethod.POST)
@ResponseBody
public Map<String, Object> importExcel(HttpServletRequest request,
                                       @RequestParam(value = "Identity") MultipartFile file, Integer personType) throws Exception {
    Map<String, Object> maps = new HashMap<String, Object>();
    FileUtil fileUtil = new FileUtil();
    File tmpFile = fileUtil.multipartToFile(request, file);
    List<Map> list = new ArrayList<Map>();// 存储数据的集合
    POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(tmpFile));
    HSSFWorkbook wb = new HSSFWorkbook(fs);// 读取上传的文件
    HSSFSheet sheet = wb.getSheetAt(0);// 读取第一张表
    // 读取标题,放入list,标题在表格的第三行,读取的excel行和列都是从0开始
    HSSFRow row = sheet.getRow(0); // 第一行读取(2改0)
    List<String> listbiaoti = new ArrayList<String>();
    // 循环该标题行的每一列,把值添加到标题的list中
    for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) {
        HSSFCell cell = row.getCell(i);
        listbiaoti.add(i, cell.toString());
    }
    // 从第四行开始取正文内容,最大行数为表格的最大行数
    for (int j = 1; j <= sheet.getLastRowNum(); j++) { // 第二行读取正文(j=3改j=1)
        row = sheet.getRow(j);// 得到每一行
        Map<String, String> map = new HashMap<String, String>();// 用于存储一行数据,必须在这里创建
        // 循环已经存入的标题的list,做为map集合的KEY
        for (int i = 0; i < listbiaoti.size(); i++) {
            String cellValue = "";
            HSSFCell cell = row.getCell(i);// 得到每一列的值
            // 判断是int类还是String类型
            if(cell == null){
                map.put((String) listbiaoti.get(i), "");
            }else{
                if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
                    // 解决数字类型转换错误
                    DecimalFormat df = new DecimalFormat("0");
                    cellValue = df.format(cell.getNumericCellValue());
                    map.put((String) listbiaoti.get(i), cellValue);
                } else {
                    // 存入map中
                    map.put((String) listbiaoti.get(i), cell.toString());
                }
            }
        }
        // 将map存到list中
        list.add(map);
    }
    // 迭代Map中的数据,存入表中
    SysUser sysUser = null;
    for (Map map1 : list) {
        sysUser = new SysUser();
        String tel = map1.get("手机号").toString();
        String[] tels = tel.split("#");
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sysUser.setCreateTime(Timestamp.valueOf(df.format(new Date())));
        if (StringUtils.isNotEmpty(map1.get("用户").toString())) {
            sysUser.setId(map1.get("用户").toString());
        }
        if (StringUtils.isNotEmpty(map1.get("用户名").toString())) {
            sysUser.setUsername(map1.get("用户名").toString());
        }
        if (StringUtils.isNotEmpty(map1.get("姓名").toString())) {
            sysUser.setRealName(map1.get("姓名").toString());
        }
        if (StringUtils.isNotEmpty(map1.get("手机号").toString())) {
            sysUser.setPhone(map1.get("手机号").toString());
        }
        if (StringUtils.isNotEmpty(map1.get("邮箱").toString())) {
            sysUser.setEmail(map1.get("邮箱").toString());
        } else {
            sysUser.setEmail(null);
        }
        if (StringUtils.isNotEmpty(map1.get("部门").toString())) {
            sysUser.setDepartment(map1.get("部门").toString());
        }
        if (StringUtils.isNotEmpty(map1.get("密码").toString())) {
            sysUser.setPassword(map1.get("密码").toString());
        }
        sysUser.setIsDelete(0);
        sysUser.setUserRole(0);
        userService.saveOrUpdate(sysUser);
    }
    // 删除上传的临时文件
    if (tmpFile.exists()) {
        tmpFile.delete();
    }
    return maps;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值