QingHuaiBuShuai 2022-03-24 13:54 采纳率: 65.7%
浏览 81
已结题

java按模板导出excel,遍历结果给单元格赋值会三层for嵌套如何避免

问题遇到的现象和发生背景
如何遍历list<map>里的数据赋值给单元格
问题相关代码,请勿粘贴截图
  List<Map<String, Object>> resultList = Service.selectInfoList(dataParams);
            XSSFWorkbook workBook = null;
            FileInputStream fis = null;
            OutputStream ouputStream = null;
            String classPath = this.getClass().getResource("/").getFile().toString();
            String srcFilePath = classPath + "/file/模板.xlsx"; //模板
            //创建Excel文件的输入流对象
            fis = new FileInputStream(srcFilePath);
            //根据模板创建excel工作簿
            workBook = new XSSFWorkbook(fis);
            //获取创建的工作簿第一页
            XSSFSheet sheet = workBook.getSheetAt(0);
            //给指定的sheet命名
            workBook.setSheetName(0, "管理人员");
            CellStyle style = workBook.createCellStyle();  //单元格样式设置
            style.setBorderRight(BorderStyle.THIN);
            style.setBorderLeft(BorderStyle.THIN);
            style.setBorderTop(BorderStyle.THIN);
            style.setBorderBottom(BorderStyle.THIN);
         for (int i = 2; i < resultList.size() + 2; i++) {
                XSSFRow row = sheet.createRow(i);       //建行
                for (int j = 0; j < resultList.get(i).size(); j++) {
                    XSSFCell cell = row.createCell(j);          //建单元格
                    for (String key : resultList.get(i).keySet()) {
                        cell.setCellValue(nvl(resultList.get(i).get(key)));    //给单元格赋值
                    }
                }
            }
            response.setContentType("application/octet-stream; charset=utf-8");
            response.setHeader("Content-Disposition", "attachment; filename=" + Encodes.urlEncode("市公司本部四级管理人员.xlsx"));
            ouputStream = response.getOutputStream();
            workBook.write(ouputStream);
            //关闭流
            ouputStream.flush();
            ouputStream.close();
我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

1条回答 默认 最新

  • 在自我救赎中成长 2022-03-24 14:50
    关注

    赋值还要循环赋值?建议先用list将每列的值装起来,再用这个list循环创建列并赋值

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 3月24日

悬赏问题

  • ¥15 powerbuilder出现这样的报错
  • ¥15 h3.6m 人类行为预测论文复现
  • ¥50 wordpress项目注册报失败刷新后其实是成功状态,请求排查原因
  • ¥20 linxu服务器僵尸进程不释放,代码如何修改?
  • ¥15 pycharm激活不成功
  • ¥40 如果update 一个列名为参数的value
  • ¥15 基于51单片机的水位检测系统设计中LCD1602一直不显示
  • ¥15 OCS2安装出现问题,请大家给点意见
  • ¥15 ros小车启动launch文件报错
  • ¥15 vs2015到期想登陆但是登陆不上