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日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效