WEB 报表导入导出操作

5 篇文章 0 订阅

需要导poi包:

         <dependency>
 <groupId>org.apache.poi</groupId>
 <artifactId>poi-ooxml</artifactId>
 <version>3.17</version>
 <classifier>sources</classifier>
</dependency>


请求路径:/stuExcel

/**
     * 报表导出
     * @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;
    }



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值