SSS项目专题(五):导入Excel

1.需求分析

在这里插入图片描述

(1)上传一个模板

(2)根据模板,上传Excel表格导入数据

2.导入Excel

①给用户一个下载模板的链接

在这里插入图片描述

<div class="layui-form-item">
    <label class="layui-form-label">选择文件</label>
    <div class="layui-input-block">
        <input type="file" name="mFile" id="no1" class="layui-input">
    </div>
</div>

②Controller层

@RequestMapping("/importStudent")
public void importStudent(Long class_id, MultipartFile mFile, HttpServletRequest request,HttpServletResponse response) throws Exception {
    response.setContentType("text/html;charset=utf-8");
    List<Student> students = new ArrayList<Student>();//空的集合

    InputStream is = mFile.getInputStream();  //获取文件的输入流
    HSSFWorkbook workbook = new HSSFWorkbook(is);// 创建一个工作簿
    HSSFSheet sheet = workbook.getSheetAt(0);// 取出第一个工作表,索引是0
    String cellStr = null;// 单元格,最终按字符串处理
    // 开始循环遍历行,表头不处理,从1开始
    for (int i = 1; i <= sheet.getLastRowNum(); i++) {
        Student s = new Student();
        HSSFRow row = sheet.getRow(i);// 获取行对象
        if (row == null) {// 如果为空,不处理
            continue;
        }
        for (int j = 0; j < row.getLastCellNum(); j++) {
            HSSFCell cell = row.getCell(j);// 获取单元格对象
            if (cell == null) {// 单元格为空设置cellStr为空串
                cellStr = "";
            } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {// 对布尔值的处理
                cellStr = String.valueOf(cell.getBooleanCellValue());
            } else if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {// 对数字值的处理
                cellStr = cell.getNumericCellValue() + "";
            } else {// 其余按照字符串处理
                cellStr = cell.getStringCellValue();
            }
            // 下面按照数据出现位置封装到bean中
            if (j == 0) {
                s.setNo(cellStr); //学号
            }else if(j == 1){
                s.setName(cellStr);
            }else if(j == 2){
                s.setSex(cellStr);
            }else if(j == 3){
                s.setBirthday(cellStr);
            }else if(j == 4){
                s.setPhone(cellStr);
            }

            //设置要导入的班级
            Classes c = cs.getById(class_id);
            s.setC(c);//学生归属某个班级
        }
        students.add(s);
    }
    //把学生批量保存到数据库中去
    int count = ss.addBanchStudent(students);
    if (count > 0) {
        response.getWriter().write("<script>alert('导入学生成功!');location.href='/stu/list/1/3';</script>");
    } else {
        response.getWriter().write("<script>alert('导入学生失败!');location.href='/stu/goImportPage';</script>");
    }

}
script>alert('导入学生失败!');location.href='/stu/goImportPage';</script>");
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值