POI 导出Excel之动态标题

需求
在这里插入图片描述
在百度上面搜半天 基本上都是写死的标题或者用注解的方式,无法实现后期根据数据来修改标题,其中有一个方法是每一列都新建一个list,这样无法实现动态(也许可以但是太复杂了)

 		//此处获取所有成绩的数据
        Map map = queryGradePoint(dto);
        List<ScoreDto> scoreList = (List<ScoreDto>) map.get("scoreList");
        log.info("scoreList" + scoreList);
        // 创建一个excel文件
        HSSFWorkbook book = new HSSFWorkbook();
        // 创建Sheet对象
        HSSFSheet sheet = book.createSheet("成绩表");
        log.info("开始条件查询 查询课程表名字的集合 names");
        QueryWrapper<SysCurriculum> wrapper = new QueryWrapper<>();
        wrapper.eq("is_delete", DeleteEnum.NOT_DELETED);
        List<SysCurriculum> sysCurriculumMapperList = sysCurriculumMapper.selectList(wrapper);
        log.info("该集合为Excel 的第一行 做标题用"+sysCurriculumMapperList);
        
        ArrayList<String> SysCurriculumnames = new ArrayList<>();
        SysCurriculumnames.add("姓名");
        SysCurriculumnames.add("班级");
        //此处新建list 的作用为 将班级 姓名等信息前置处理
        for (SysCurriculum sysCurriculum : sysCurriculumMapperList) {
            String name = sysCurriculum.getName();
            SysCurriculumnames.add(name);
        }
        SysCurriculumnames.add("个人平均分");
        SysCurriculumnames.add("绩点");
        SysCurriculumnames.add("挂科数<60");
        SysCurriculumnames.add("总学分");

        //文件生成开始
        HSSFRow row = null;
        HSSFCell cell = null;
        int rowIndex = 2;
        row = sheet.createRow(0);
        row.setHeightInPoints(40);
        int i = 0;
        for (String string : SysCurriculumnames) {
            cell = row.createCell(i);
            cell.setCellValue(string);
            i++;
        }
        FileSystemView fsv = FileSystemView.getFileSystemView();
        File com = fsv.getHomeDirectory();
        File file = new File(com.getPath());
        log.info("Excel 生成的位置 "+com.getPath());
        OutputStream stream = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddhhmmss");
            Date date = new Date();
            stream = new FileOutputStream(new File(file, "成绩表" + sdf.format(date) + ".xls"));
            book.write(stream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (stream != null) ;
            try {
                stream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值