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; }