public static boolean saveExcelMutiSheet(Map<String, List<Map<String, Object>>> dataMap, String fileName) { if (dataMap == null || dataMap.isEmpty()) return false; // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); for (Map.Entry<String, List<Map<String, Object>>> entry : dataMap.entrySet()) { List<Map<String, Object>> data = entry.getValue(); String sheetName = entry.getKey(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet(sheetName); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short HSSFRow row = sheet.createRow(0); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 int column = 0; for (String str : data.get(0).keySet()) { HSSFCell cell = row.createCell(column++); cell.setCellValue(str); cell.setCellStyle(style); } // 第五步,写入实体数据 实际应用中这些数据从数据库得到, int rowNum = 1; for (Map<String, Object> map : data) { row = sheet.createRow(rowNum++); int columnNum = 0;// 第四步,创建单元格,并设置值 for (Object value : map.values()) { if (value == null) { row.createCell(columnNum++).setCellValue("null"); } else { row.createCell(columnNum++).setCellValue(value.toString()); } } } } // 第六步,将文件存到指定位置 try { FileOutputStream fout = new FileOutputStream(fileName); wb.write(fout); fout.close(); } catch (Exception e) { e.printStackTrace(); } return true; }
转载于:https://my.oschina.net/u/1778309/blog/1505947