l创建Excel文件
最近的项目中遇到需要将List<Map<String,String>>存储到Excel文件中,为满足此需求设计实现了如下函数:
1 /** 2 * 将MapList转化为Excel文件 3 * @param excelFile--excel文件的路径 4 * @param mapList---要存储的mapList 5 * @param titles----对应的列名称 6 * @param enTitles---列名称map的keys数组 7 * @throws Exception 8 */ 9 public void mapListToExcel(String excelFile,List<Map<String, String>> mapList, Map<String, String> titles, String[] enTitles) throws Exception{ 10 FileOutputStream fos=new FileOutputStream(excelFile); 11 HSSFWorkbook workbook = new HSSFWorkbook(); 12 HSSFCellStyle style = workbook.createCellStyle(); 13 List<HSSFSheet> sheets = new ArrayList<HSSFSheet>(); 14 /** 15 * 设置其它数据风格 16 */ 17 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体 18 style.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色. 19 style.setBorderLeft(HSSFCellStyle.BORDER_THIN); 20 style.setLeftBorderColor(HSSFColor.BLACK.index); 21 style.setBorderRight(HSSFCellStyle.BORDER_THIN); 22 style.setRightBorderColor(HSSFColor.BLACK.index); 23 style.setBorderTop(HSSFCellStyle.BORDER_THIN); 24 style.setTopBorderColor(HSSFColor.BLACK.index); 25 style.setWrapText(true);//自动换行 26 27 int columnNum = 0; //列数 28 int rowNum = 0; //行数 29 int sheetNum = 0; //工作簿数 30 31 if(mapList == null || mapList.size() == 0) 32 { 33 sheets.add(createSheet(workbook,titles,style,"sheet" + sheetNum,enTitles)); 34 return ; 35 } 36 37 Iterator<Map<String, String>> iter = mapList.iterator(); 38 39 while(iter.hasNext()) 40 { 41 Map<String, String> obj = iter.next(); 42 if(rowNum == 0) 43 { 44 sheets.add(createSheet(workbook,titles,style,"sheet" + sheetNum,enTitles)); 45 sheetNum++; 46 } 47 rowNum++; 48 columnNum = 0; 49 HSSFRow dataRow = sheets.get(sheetNum-1).createRow(rowNum); 50 51 52 for(String title: enTitles){ 53 HSSFCell cell = dataRow.createCell(columnNum); 54 String value = obj.get(title); 55 cell.setCellValue(value); 56 cell.setCellStyle(style); 57 columnNum++; 58 } 59 60 if(rowNum > 65534) 61 { 62 rowNum = 0; 63 } 64 } 65 66 workbook.write(fos); 67 fos.close(); 68 69 70 } 71 72 /** 73 创建Excel工作簿 74 */ 75 private HSSFSheet createSheet(HSSFWorkbook workbook,Map<String, String> titles,HSSFCellStyle style,String sheetname, String[] enTitles) 76 { 77 HSSFSheet sheet = workbook.createSheet(sheetname); 78 sheet.autoSizeColumn(1, true); //列自适应宽度 79 int columnNum = 0; 80 int rowNum = 0; 81 HSSFRow titleRow = sheet.createRow(rowNum); 82 83 for(String key: enTitles){ 84 HSSFCell cell = titleRow.createCell(columnNum); 85 String title = titles.get(key); 86 cell.setCellValue(title); 87 cell.setCellStyle(style); 88 columnNum++; 89 } 90 return sheet; 91 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)