package tech.aiflowy.common.ai; import cn.idev.excel.EasyExcel; import cn.idev.excel.read.listener.PageReadListener; import com.agentsflex.core.document.Document; import com.agentsflex.core.document.DocumentParser; import com.alibaba.fastjson.JSON; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; public class ExcelDocumentParser implements DocumentParser { @Override public Document parse(InputStream inputStream) { List> tableData = new ArrayList<>(); List headerRow = new ArrayList<>(); // 使用 EasyExcel 读取 Excel 输入流 EasyExcel.read(inputStream, new PageReadListener>(dataList -> { for (Map row : dataList) { List rowData = new ArrayList<>(); for (int i = 0; i < row.size(); i++) { // 注意这里是 i < row.size() rowData.add(row.getOrDefault(i, "")); // 防止 null 值 } if (headerRow.isEmpty()) { // 第一行作为表头 headerRow.addAll(rowData); tableData.add(headerRow); } else { // 添加数据行 tableData.add(rowData); } } })) // .headRowNumber(0) // 关键:不要跳过任何行 .sheet() // 默认第一个 sheet .doRead(); // String plainText = generateMarkdownTable(tableData); // 创建并返回 Document 对象 return new Document(JSON.toJSONString(tableData)); } }