用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

做企业系统的朋友应该都有同感:最头疼的从来不是按标准模板走的流程,而是用户手里那些"野生"的Excel文件。我们项目里本来有一套很顺的方案:给用户一个固定模板的Excel,填好上传,后端用Python直接按表头key提取数据,干净利落。但现实是,客户手里早就攒了一堆三方导出的、自己手工整理的表格,字段名五花八门,排版千奇百怪。数据量小还好说,让用户对着模板重新抄一遍也能忍;要是动辄成百上千行,再让人家重新录入一遍,换谁心里都得犯嘀咕。与其逼用户适应系统,不如我们来搞定这些"不规矩"的表格——把任意格式的行业表格,自动解析成后端能用的结构化JSON。今天就把我们在Dify上磨出来的完整方案分享出来,权当抛砖引玉。

一、 方案介绍

核心思路:用SQL能力驱动CSV解析 这套方案的核心逻辑其实很朴素:不跟复杂的Excel格式死磕,而是先把表格转成CSV,再用Dify自带的Database或CSV SQL查询工具去读数据。剩下的工作流,本质上都是在给工具喂数据、给输出做格式封装。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

下面一步步拆解每个节点的作用和实现细节。

1.1 Excel转CSV:多Sheet自动拆分

第一步先做格式转换,把上传的Excel文件统一转成CSV。直接用文件转换器组件就行,输入Excel文件,输出CSV文件。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

这里有个容易踩的坑:如果原Excel里有多个Sheet,转换器会返回多个文件对象,一个Sheet对应一个CSV。后面所有处理逻辑都要考虑"多文件遍历"的情况,不然后面只会读到第一张表的数据。

1.2 读取全量CSV数据

转好CSV之后,用Database工具执行查询,把CSV里的全量数据读出来,输出为JSON格式。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

因为上一步可能产出多个CSV文件(多Sheet),所以这里一定要做循环遍历,把每一份CSV的数据都查出来,不能只处理第一个文件。

1.3 截断数据:只给AI表头,避免上下文爆炸

读到全量数据之后,很多人会纳闷:为什么不直接扔给大模型去分析?原因很现实:如果表格有几百上千行,全量塞进上下文,不仅token消耗大,还很容易让LLM处理异常。我们真正需要AI识别的其实只有表头,数据行根本不用给它看。所以加一个代码节点,只截取JSON前2000个字符(足够覆盖表头区域),再丢给AI。顺便把全量数据也存一份,后面匹配数据还要用。import jsondef main(arg1):recruitmentlist = []if isinstance(arg1, list):for item in arg1:if isinstance(item, dict):recruitmentlist.extend(item.get("result", []))jsonstr = json.dumps(arg1,ensureascii=False,separators=(",", ":"))return {"result": jsonstr[:2000],"recruitmentlist": recruitment_list}

1.4 AI识别表头:把乱字段映射成业务字段

这一步是整个方案的灵魂——让大模型去看懂表头。很多导出的Excel表头根本不规范,比如合并单元格、空表头、Unnamed: 1这种默认字段名。人一眼能看出来"Unnamed: 2那一列其实是公司名称",但程序认不出来,就得靠LLM来做这个映射。我们的目标很明确:让AI找出我们关心的关键字段(比如公司名称、企业名称)对应表格里的哪个字段名,同时返回全部表头的映射关系。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

提示词可以这么写,一定要强制纯JSON输出,不要markdown包裹,不然后面解析容易出问题:分析数据中表格的表头内容,找出单位名称/公司名称/企业名称的表头字段和准确的表头名称。直接按以下格式输出可用的json内容,不使用markdown格式输出,不包含"`json",不添加任何其它说明内容、提示等。{"title":"表头字段名称(string类型),例如:'Unnamed: 12': '单位名称'中Unnamed: 12 就是表头字段名称","name":"表头名称内容(string类型),例如:'Unnamed: 12': '单位名称'中的 单位名称 就是表头名称内容","all_table":"全部表头字段和对应的名称内容(string类型)"}举个例子,AI识别后会告诉你:表格里Unnamed: 1对应的实际含义是"区(市)县",Unnamed: 2对应的是"公司名称"。拿到这个映射关系,后面就能精准取数了。

1.5 遍历提取全量关键字段

拿到表头映射之后,就可以回到之前存的全量数据里,把我们关心的关键字段(比如所有公司名称)全部提取出来。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

和前面一样,因为可能有多个Sheet、多份CSV,这里依然要做遍历处理,确保每张表的数据都被抽到。
这样就提取到了全部对应的数据内容啦

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

1.6 数据分组整理:按唯一值做聚合

提取到所有关键字之后,再做一次整理:把数据按唯一值归组。比如一张招聘表里,A公司招了100个岗位,散落在100行里。我们先整理出所有不重复的公司名单,后续就可以按公司维度去匹配它名下的所有岗位数据。这一步顺便返回数据条数,方便做校验,看看提取的数量和预期对不对得上。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

1.7 按唯一值匹配全量数据

这一步用代码节点实现:遍历上一步整理好的唯一值列表,去全量数据里把匹配的行全部捞出来。实际场景里往往会有脏数据:合并单元格导致的空值、名称前后有空格、同一家公司写法不一样……这些都需要根据自己的业务场景写过滤规则,做模糊匹配或清洗,保证提取的准确率。没有万能规则,这块得自己打磨。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

1.8 LLM做最终格式整合

数据都捞出来之后,最后让LLM做一遍格式组装,按照后端需要的JSON结构输出最终结果。这里的提示词自由度很高,根据你们的业务字段来写就行,核心是规定好输出的JSON Schema,让AI严格按结构填充数据。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

1.9 格式校验后输出

LLM输出的JSON不一定百分百合规,可能多逗号、少引号。最后加一个JSON校验工具做校正,确保输出的是标准可用的JSON,再返回给业务系统。

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

二、完整工作流总览

下面是整套流程的工作流示意图,每个节点和上面讲的步骤一一对应,大家搭的时候可以对照着来:

用Dify搞定无规则Excel解析:一套可落地的表格数据处理工作流

写在最后

这套方案是我们在实际项目里一点点磨出来的,算不上什么高大上的黑科技,就是用现有工具组合出了一个能打的解法。它不一定是最优解,但胜在落地快、不用额外写太多后端代码,大部分逻辑都能在Dify里跑通。适合那些"客户Excel格式不统一,但字段含义都在同一个领域内"的场景。如果你也在被类似的问题困扰,不妨照着这个思路试试。当然肯定还有很多可以优化的地方,比如表头识别的准确率、多Sheet的异常处理、脏数据的清洗规则等等。如果你有更好的想法,欢迎留言交流,咱们一起碰出更优的方案。觉得有用的话,点个关注,后面继续分享更多Dify实战技巧。#Dify#工作流#AI开发#智能体开发#AI#Dify使用技巧

AI知识库企业落地新闻资讯

做完一次总体设计后,我重新理解了企业级知识库

2026-7-29 10:10:47

企业落地新闻资讯智能客服

融资2400万美元,Rime正把AI接电话做成一门通用生意

2026-7-29 11:56:47

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
搜索