From f642418efcb582a966cf661b7df3042348e377d0 Mon Sep 17 00:00:00 2001 From: p7mpv4cbt <1352787923@qq.com> Date: Wed, 5 Nov 2025 11:28:59 +0800 Subject: [PATCH] ADD file via upload --- ExcelExporter.java | 59 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 ExcelExporter.java diff --git a/ExcelExporter.java b/ExcelExporter.java new file mode 100644 index 0000000..f59bc4e --- /dev/null +++ b/ExcelExporter.java @@ -0,0 +1,59 @@ +// 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 + } + } + } +} \ No newline at end of file