// src/main/java/com/llm/analysis/ExcelExporter.java package com.llm.analysis; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; import java.util.Map; public class ExcelExporter { /** * 将词频统计结果写入XLSX文件。 * @param topWords Top N 词语列表 * @param filename 输出文件名 */ public static void exportToXLSX(List> topWords, String filename) { Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("LLM应用案例词频"); // 创建表头 Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("排名"); headerRow.createCell(1).setCellValue("词语/LLM应用案例"); headerRow.createCell(2).setCellValue("词频 (总数)"); // 填充数据 int rowNum = 1; for (int i = 0; i < topWords.size(); i++) { Map.Entry entry = topWords.get(i); Row row = sheet.createRow(rowNum++); row.createCell(0).setCellValue(i + 1); // 排名 row.createCell(1).setCellValue(entry.getKey()); // 词语 row.createCell(2).setCellValue(entry.getValue()); // 词频 } // 自动调整列宽 for (int i = 0; i < 3; i++) { sheet.autoSizeColumn(i); } // 写入文件 try (FileOutputStream fileOut = new FileOutputStream(filename)) { workbook.write(fileOut); System.out.println("✅ 数据成功导出到 " + filename); } catch (IOException e) { System.err.println("导出Excel失败:" + e.getMessage()); } finally { try { workbook.close(); } catch (IOException e) { // Ignore } } } }