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

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 深海控制器DSE7320MKII和博世ECU间can通讯知识
    • ¥15 Ru的复折射率用于FDTD 200nm到1200nm
    • ¥15 使用Fiddler抓包,textview的乱码如何解决
    • ¥50 trio连接驱动器报错
    • ¥15 有谁懂nhanes的权重计算啊
    • ¥15 欧姆龙PLC 电机控制 限位
    • ¥30 如何处理shell命令接收到的视频流并实时播放出来
    • ¥15 虚心请教C#的代码优化问题
    • ¥15 有偿求做台风过境全过程模拟仿真
    • ¥50 求!AutomationDesk 如何自动导入Variant数据