AI 为什么不认识 Excel 文件?——用 SpreadJS 与 GCExcel 打通 AI 与数据的鸿沟

AI 为什么不认识 Excel 文件?——用 SpreadJS 与 GCExcel 打通 AI 与数据的鸿沟
最新回答
安季浅空

2020-11-29 15:51:02

AI 不认识 Excel 文件主要是因为 Excel 文件结构复杂、计算语义缺失、上下文依赖强,且业务文件存在安全与体量限制,而通过 SpreadJS 与 GCExcel 的结合,可为 AI 提供标准化、可编程的解析与读写能力,打通 AI 与 Excel 数据的鸿沟。

  • AI 不认识 Excel 文件的原因

    文件结构复杂:Excel(xlsx)本质是压缩包 + XML/二进制,包含工作簿、工作表、单元格样式、合并信息、数据验证、公式、图表、数据透视表、切片器、迷你图、形状等多层结构。通用大模型擅长“文本流”,面对这种“结构化 + 呈现层 + 计算引擎”的复合格式,无法直接还原业务语义。

    计算语义缺失:Excel 的核心价值在于“公式计算”和“引用关系”。若只把内容当文本解析,公式不会计算、依赖关系丢失、数据透视表失去聚合逻辑,AI 得到的只是“静态文本”,而非“活数据”。

    上下文依赖强:命名区域、跨表引用、动态数组、条件格式、数据验证规则,决定了“表格 = 数据 + 约束 + 逻辑”。缺少对这些对象模型的读取,AI 的理解注定片面。

    安全与体量:业务 Excel 常含多 Sheet、大体量、权限与隐私要求,纯上传到第三方 AI 并不可行,需要在企业内网侧做解析与脱敏,再与 AI 交互。

  • 破局之道:AI 大语言模型与专业电子表格组件的强强联合

    AI 的智慧大脑:大型语言模型

    自然语言理解与指令执行:LLM 能够精准理解用户的自然语言指令,将其转化为具体的数据操作、分析任务或公式生成,降低数据分析门槛。

    非结构化数据解析:对于 Excel 单元格内混杂的文本、数字和格式,LLM 能够像人一样进行上下文理解,从中提取出结构化的关键信息,如从大段的产品描述中提取规格、价格和供应商。

    智能分析与洞察生成:将表格数据交由 LLM,它可以自动进行趋势分析、异常值检测、数据分类、情感分析,并生成通俗易懂的摘要报告,将原始数据转化为商业洞察。

    结构化输出能力:最新的 LLM API 支持 JSON Schema 模式,可以强制模型以预定义的、严格的 JSON 格式返回结果,保证 AI 输出的数据能够被程序稳定、可靠地解析和使用。

    专业电子表格的坚实骨架:SpreadJS 与 GCExcel

    SpreadJS:前端的用户体验基石

    高性能:专为 Web 环境优化,能够流畅加载和操作包含大量数据和复杂公式的 Excel 文件,提供卓越的用户体验。

    高兼容性:支持导入导出 SSJSON、XLSX 等多种格式,兼容 Excel 内置函数、条件格式、图表、数据透视表等核心功能。

    强大的扩展性:提供丰富的 API,可以与 Vue、React、Angular 等现代前端框架无缝集成,并允许开发者自定义功能和界面。

    GCExcel:后端的性能引擎

    服务端批量处理:能够稳定、高效地处理 Excel 报表的自动化生成与解析任务,这是前端无法比拟的。

    数据安全与逻辑封装:将与 AI 模型的 API 交互、核心业务逻辑和数据验证等操作放在服务端,可以有效保护 API 密钥等敏感信息,并确保业务规则的一致性。

    SJS,SSJSON 作为桥梁:SpreadJS 和 GCExcel 可以通过一种名为 SSJSON 的 JSON 格式进行高效的数据交换。前端使用 SpreadJS 设计的带有复杂格式和公式的模板,可以序列化为 SSJSON 发送到后端,由 GCExcel 进行高性能的数据填充和计算,再将结果返回给前端展示。这种“前端设计界面,后端处理数据”的全栈模式,完美结合了二者的优势。

  • 技术实现:分步构建 AI 驱动的 Excel 解析与处理系统

    架构总览

    用户上传:用户在 Web 应用界面通过 SpreadJS 组件上传一个 Excel 文件。

    前端解析:SpreadJS 在浏览器端快速加载并解析该文件,将其内容(或用户选定的数据区域)转换为 JSON 格式。

    API 请求:前端将 JSON 数据连同用户的自然语言指令(例如“分析销售趋势”)发送到应用后端服务器。

    后端处理与 AI 调用:后端服务(使用 GCExcel 进行深度处理,如果需要的话)接收到请求,构建一个包含上下文、任务指令和数据的 Prompt。随后,后端安全地调用大型语言模型的 API。

    AI 分析与返回:LLM 根据 Prompt 分析数据,并按照预设的 JSON Schema 格式返回结构化的分析结果。

    数据回写:后端接收到 AI 返回的 JSON 数据,进行必要的处理后,将其发送回前端。

    前端呈现:SpreadJS 接收到分析结果,并利用其丰富的 API 将数据、图表或文本摘要动态地更新到工作表中,以直观的方式呈现给用户。

- 关键实现步骤详解 - 前端区域提取与清洗(SpreadJS API):通过 SpreadJS 获取已使用的数据区域并转成简化 HTML,清理样式信息,仅保留结构与数据。示例代码如下:const range = sheet.getRange(usedRange.row, usedRange.col, usedRange.rowCount, usedRange.colCount);const html = range.toHtml();const cleanedHtml = cleanHtml(html);// 清理样式信息,仅保留结构与数据function cleanHtml(html) { const parser = new DOMParser(); const doc = parser.parseFromString(html, "text/html"); for (const el of doc.body.getElementsByTagName("*")) { el.removeAttribute("style"); } return doc.body.innerHTML;} - 数据传输与 AI 交互(GcExcel + LLM):在服务端中,通过 GcExcel 打开上传的文件,读取工作表结构,将清洗后的 HTML 与右侧字段映射表 (jsonSchema) 统一打包发送给 AI。示例代码如下:@PostMapping("/process")public ResponseEntity<InputStreamResource> processFile( @RequestParam("file") MultipartFile file, @RequestParam("cleanedHtml") String cleanedHtml, @RequestParam("jsonSchema") String jsonSchema) throws IOException { Workbook workbook = new Workbook(); workbook.open(file.getInputStream(), OpenFileFormat.Sjs); String prompt = TextTool.HtmlStringCombiner("prompts/start.txt", "prompts/end.txt", cleanedHtml); // 调用 AI 服务 String result = callWithMessage(prompt); ...} - Prompt 模板驱动:让 AI “认出”数据区域:设计类似以下 Prompt,让 AI 准确识别哪些单元格是“可填数据区”,返回 JSON 格式。示例如下:请从给定的HTML表格中,找出应填写实际数据的单元格位置,返回JSON格式:[ {"startRow": 1, "endRow": 2, "startCol": 3, "endCol": 4, "data": "客户名称"}] - 前端结果回写与展示:AI 输出 JSON 后,SpreadJS 再将结果写回前端表格,实现“可见即所得”的智能分析。示例代码如下:function updateSheet(analysisResult) { const sheet = spread.getActiveSheet(); sheet.setValue(0, 0, "AI分析摘要:"); sheet.setValue(1, 0, analysisResult.summary); if (analysisResult.table) { sheet.setArray(3, 0, analysisResult.table); }}
  • SpreadJS & GCExcel 落地场景

    智能财报分析系统:财务人员上传公司财报 Excel 文件,系统自动调用 AI 识别并提取关键财务指标(如收入、利润、现金流),计算财务比率(如流动比率、资产负债率),并生成一份包含图表和自然语言分析摘要的深度分析报告。

    合同/发票信息自动提取:企业法务或商务部门上传大量合同或发票的 Excel 列表(甚至可以是包含扫描件图像的 Excel),AI 利用其多模态能力,自动从非结构化的文本或图像中提取合同方、金额、关键条款、到期日等信息,并填充到结构化的数据表中,极大地提升了文档处理效率。

    市场调研数据智能清洗与洞察:市场分析师上传包含大量用户开放式问卷回答的 Excel 文件。AI 能够自动对错别字、不规范表达进行清洗和标准化,对数千条文本评论进行情感分析和主题聚类,快速识别出用户的核心关切点和市场趋势。

    自然语言驱动的报表生成器:业务人员在一个输入框中用自然语言描述他们想要的报表,例如“生成一份按区域和产品线划分的上季度销售额对比图表”。系统将指令和相关数据发送给 AI,AI 分析后返回生成图表所需的数据和配置,SpreadJS 根据这些信息自动在前端生成交互式图表。