使用ExcelWriter导出数据到excel表时出现字段缺失的问题 2021.6.30

使用ExcelWriter导出数据到excel表时出现字段缺失的问题


公司使用ExcelWriter来实现数据库中数据导出到Excel表中,具体代码如下(顺便记录一下数据导出的实现代码)

// An highlighted block
@Override
    public File exportBuildings() {
        List<Building> buildings = buildingMapper.selectList(null);
        if (CollectionUtil.isEmpty(buildings)) {
            return null;
        }
        File outFile = new File("./" + "楼栋信息" + RandomUtil.randomString(6) + ".xls");
        System.out.println(outFile.getAbsolutePath());
        ExcelWriter writer = ExcelUtil.getWriter(outFile, "楼栋信息");
        writer.setOnlyAlias(true);
        String[] rowAlias = new String[]{"序号", "楼栋编号", "楼栋名称", "楼栋简称", "所在校区", "用途", "楼层", "所属单位名称",
                "备注", "使用状态"};
        String[] rowName = new String[]{"number", "buildCode", "buildName", "shortName", "schoolName", "usedFor",
                "countFloor", "deptBelong", "remark", "buildStatus"};
        for (int i = 0; i < rowAlias.length; i++) {
            writer.addHeaderAlias(rowName[i], rowAlias[i]);
            //设置列宽
            writer.setColumnWidth(i, 20);
        }
        writer.merge((rowAlias.length - 2), "楼栋信息");
        List<ExportBuildingVo> buildingVos = buildings.stream().map(e -> {
            ExportBuildingVo exportBuildingVo = new ExportBuildingVo();
            BeanUtil.copyProperties(e, exportBuildingVo);
            exportBuildingVo.setCountFloor(e.getUpFloor() + e.getDownFloor());
            exportBuildingVo.setBuildStatus(e.getBuildStatus().equals("0") ? "停用" : "正常");
            return exportBuildingVo;
        }).collect(Collectors.toList());
        writer.write(buildingVos, true);
        //导出产生自增的序号
        for (int i = 0; i < buildings.size(); i++) {
            writer.writeCellValue(0, 2, i + 1);
        }
        writer.autoSizeColumnAll();
        //设置自动换行
        writer.getCellStyle().setWrapText(true);
        writer.flush();
        //关闭writer
        writer.close();
        return outFile;
    }

中途遇到导出数据字段不完全的情况,正常情况下应该导出11条数据,实际只导出5条。

只有五条数据

经检查后发现,每个字段的名称必须要与vo数据的字段名一一对应,我之前是与数据库中的字段名对应,造成字段减少

String[] rowName = new String[]{"number", "build_code", "build_name", "short_name", "school_name", "used_for",
                "count_floor", "dept_belong", "remark", "build_status"};

在调整一下行宽,就好看了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值