• WEB 报表导入导出操作


    /**
         * 报表导出
         * @param response
         */
        @RequestMapping("/stuExcel")
        @LogAnno(value="对学生数据进行了excel表格导出",grade="info")
        public void stuExcel(HttpServletResponse response){
            //查询所有学生信息
            List<Student> list = stuService.selectAll();
            //创建输出流
            OutputStream fileOut = null;
            try {
                // 导出
                // 重置输出流
                response.reset();
                // 设置导出Excel报表的导出形式
                response.setContentType("application/vnd.ms-excel");
                // 自定义响应文件名
                String fileName = new String("学生信息表".getBytes("utf-8"),
                        "ISO-8859-1");
                response.setHeader("Content-disposition", "attachment;filename="
                        + fileName + ".xls");
                fileOut = response.getOutputStream();
                // 创建工作空间
                Workbook wb = new HSSFWorkbook();
                // 创建sheet
                Sheet sheet = wb.createSheet("sheet1");
                // 设置列宽
                sheet.setColumnWidth(0, 2300);
                sheet.setColumnWidth(1, 2300);
                sheet.setColumnWidth(2, 2300);
                sheet.setColumnWidth(3, 3400);
    
                CreationHelper creationHelper = wb.getCreationHelper();
                // 创建行 从 0 开始为第一行
                Row row = sheet.createRow((short) 0);
                row.setHeight((short) 450);// 目的是想把行高设置成25px
                // 创建列 从0 开始为第一列
                // 第一行的数据
                row.createCell(0).setCellValue(
                        creationHelper.createRichTextString("学生编号")
                );
                row.createCell(1).setCellValue(
                        creationHelper.createRichTextString("学生姓名"));
                // 设置String
                row.createCell(2).setCellValue(
                        creationHelper.createRichTextString("就业单位"));
                row.createCell(3).setCellValue(
                        creationHelper.createRichTextString("学生图片"));
                row.createCell(4).setCellValue(
                        creationHelper.createRichTextString("学生薪资"));
                row.createCell(5).setCellValue(
                        creationHelper.createRichTextString("入职时间"));
                row.createCell(6).setCellValue(
                        creationHelper.createRichTextString("培训时间"));
                row.createCell(7).setCellValue(
                        creationHelper.createRichTextString("是否是明星学员"));
                row.createCell(8).setCellValue(
                        creationHelper.createRichTextString("学校"));
                row.createCell(9).setCellValue(
                        creationHelper.createRichTextString("学历"));
                row.createCell(10).setCellValue(
                        creationHelper.createRichTextString("工作地址"));
                row.createCell(11).setCellValue(
                        creationHelper.createRichTextString("学生感言"));
                row.createCell(12).setCellValue(
                        creationHelper.createRichTextString("状态"));
                row.createCell(13).setCellValue(
                        creationHelper.createRichTextString("备注"));
                row.createCell(14).setCellValue(
                        creationHelper.createRichTextString("作者"));
    
                int i=1;
                for (Student stu : list) {
                    
                    Row row1 = sheet.createRow((short) i);
                    row1.setHeight((short) 450);// 目的是想把行高设置成25px
                    
                    String uid=String.valueOf(stu.getStuId()); 
                    // 第二行的数据
                    row1.createCell(0).setCellValue(
                            creationHelper.createRichTextString(uid));
                    row1.createCell(1).setCellValue(
                            creationHelper.createRichTextString(stu.getStuName()));
                    // 设置String
                    row1.createCell(2).setCellValue(
                            creationHelper.createRichTextString(stu.getStuCompany()));
                    row1.createCell(3).setCellValue(
                            creationHelper.createRichTextString(stu.getStuPicture()));
                    row1.createCell(4).setCellValue(
                            creationHelper.createRichTextString(String.valueOf(stu.getStuSalary())));
                    row1.createCell(5).setCellValue(
                            creationHelper.createRichTextString(String.valueOf(new SimpleDateFormat("yyyy-MM-dd").format(stu.getStuEntrytime()))));
                    row1.createCell(6).setCellValue(
                            creationHelper.createRichTextString(String.valueOf(new SimpleDateFormat("yyyy-MM-dd").format(stu.getStuTrainingtime()))));
                    String isStart="";
                    if(stu.getStuIsstar()!=null){
                        if(stu.getStuIsstar()==1){
                            isStart="";
                        }
                    }
                    row1.createCell(7).setCellValue(
                            creationHelper.createRichTextString(isStart));
                    row1.createCell(8).setCellValue(
                            creationHelper.createRichTextString(String.valueOf(stu.getStuSchool())));
                    row1.createCell(9).setCellValue(
                            creationHelper.createRichTextString(stu.getStuEducation()));
                    row1.createCell(10).setCellValue(
                            creationHelper.createRichTextString(stu.getStuWorkaddress()));
                    row1.createCell(11).setCellValue(
                            creationHelper.createRichTextString(stu.getStuRecollections()));
                    //1表示缉编中       2 待审核   3  待发布   4 取消发布    5 过期 
                    String style="";
                    //判断状态
                    switch (stu.getStuState()) {
                    case 1:style="缉编中";break;
                    case 2:style="待审核";break;
                    case 3:style="待发布";break;
                    case 4:style="取消发布";break;
                    case 5:style="过期 ";break;
                    }
                    row1.createCell(12).setCellValue(
                            creationHelper.createRichTextString(style));
                    row1.createCell(13).setCellValue(
                            creationHelper.createRichTextString(stu.getStuNote()));
                    row1.createCell(14).setCellValue(
                            creationHelper.createRichTextString(stu.getStuWriter()));
                    
                    i++;
                }
    
                
                wb.write(fileOut);
                fileOut.close();
                
            } catch (Exception e) {
                e.printStackTrace();
            } 
        }
    /**
         * 报表导入
         */
        @RequestMapping("/ExcelInfo")
        @LogAnno(value="对学生数据进行了excel表格导入",grade="info")
        public RespModel ExcelInfo(MultipartFile file,HttpServletRequest request){
            RespModel rm=new RespModel();
            InputStream fileIn=null;
            try {
                fileIn=file.getInputStream();
                //根据指定的文件输入流导入Excel从而产生Workbook对象
                 Workbook wb0 = new HSSFWorkbook(fileIn);
                 //获取Excel文档中的第一个表单
                 Sheet sht0 = wb0.getSheetAt(0);
                 //对Sheet中的每一行进行迭代
                 for (Row r : sht0) {
                      //如果当前行的行号(从0开始)未达到2(第三行)则从新循环
                     if(r.getRowNum()<1){
                         continue;
                     }
                     //创建实体类
                     Student stu=new Student();
                     //取出当前行第1个单元格数据,并封装在info实体stuName属性上
                     stu.setStuName(r.getCell(1)==null?null:r.getCell(1).getStringCellValue());
                     stu.setStuCompany(r.getCell(1)==null?null:r.getCell(2).getStringCellValue());
                     stu.setStuEducation(r.getCell(1)==null?null:r.getCell(9).getStringCellValue());
                     stu.setStuEntrytime(r.getCell(5)==null?null:new SimpleDateFormat("yyyy-MM-dd").parse(r.getCell(5).getStringCellValue()));
                     stu.setStuIsstar("".equals(r.getCell(7))==true?1:0);
                     stu.setStuNote(r.getCell(13)==null?null:r.getCell(13).getStringCellValue());
                     stu.setStuPicture(r.getCell(3)==null?null:r.getCell(3).getStringCellValue());
                     stu.setStuRecollections(r.getCell(11)==null?null:r.getCell(11).getStringCellValue());
                     stu.setStuSalary(r.getCell(4)==null?null:Float.valueOf(r.getCell(4).getStringCellValue()));
                     stu.setStuSchool(r.getCell(8)==null?null:r.getCell(8).getStringCellValue());
                     String state = r.getCell(12)==null?"":r.getCell(12).getStringCellValue();
                     int sta=1;
                     switch (state) {
                        case "缉编中": sta=1;break;
                        case "待审核": sta=2;break;
                        case "待发布": sta=3;break;
                        case "取消发布": sta=4;break;
                        case "过期": sta=5;break;
                        }
                     stu.setStuState(sta);
                     stu.setStuTrainingtime(r.getCell(6)==null?null:new SimpleDateFormat("yyyy-MM-dd").parse(r.getCell(6).getStringCellValue()));
                     stu.setStuWiter(r.getCell(14)==null?null:r.getCell(14).getStringCellValue());
                     stu.setStuWorkaddress(r.getCell(10)==null?null:r.getCell(10).getStringCellValue());
                     //添加学生
                     stuService.addStuInfo(stu);
                 }
                    
                rm.setFlag(true);
                rm.setMsg("数据导入成功!");
                fileIn.close();
            } catch (Exception e) {
                System.out.println("异常");
                rm.setFlag(false);
                rm.setMsg("数据导入失败!");
                e.printStackTrace();
            }
            return rm;
        }
  • 相关阅读:
    vue中$route和$router的区别
    vscode
    好用的天气插件
    jQuery的slideUp和slideDown函数
    在CSS/JS之后开发工作人员经常会考虑的性能优化。从用户刷新页面,一次js请求下有哪些地方需要缓存
    前端与BI
    XSS和CSRF区别
    兼容性问题
    div跟随鼠标移动
    匀速运动
  • 原文地址:https://www.cnblogs.com/liujiayun/p/6285360.html
Copyright © 2020-2023  润新知