免费POC, 零成本试错
FDE知识库

FDE知识库

学习大模型的前沿技术与行业落地应用


收藏

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

发布日期:2026-07-28 16:42:19 浏览次数: 1999
作者:ZY-AI 实验室

微信搜一搜,关注“ZY-AI 实验室”

推荐语

企业系统处理“野生Excel”难题?Dify这套可落地工作流,自动解析无规则表格成结构化JSON,轻松搞定任意格式数据。
核心内容:
1. 核心思路:SQL驱动CSV解析,不与复杂Excel格式死磕
2. 关键步骤:Excel转CSV(多Sheet自动拆分)
3. 数据处理:全量读取CSV并智能截断表头,避免token爆炸

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

一、 方案介绍

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

1.1 Excel转CSV:多Sheet自动拆分

第一步先做格式转换,把上传的Excel文件统一转成CSV。直接用文件转换器组件就行,输入Excel文件,输出CSV文件。
这里有个容易踩的坑:如果原Excel里有多个Sheet,转换器会返回多个文件对象,一个Sheet对应一个CSV。后面所有处理逻辑都要考虑"多文件遍历"的情况,不然后面只会读到第一张表的数据。

1.2 读取全量CSV数据

转好CSV之后,用Database工具执行查询,把CSV里的全量数据读出来,输出为JSON格式。
因为上一步可能产出多个CSV文件(多Sheet),所以这里一定要做循环遍历,把每一份CSV的数据都查出来,不能只处理第一个文件。

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

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

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

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

拿到表头映射之后,就可以回到之前存的全量数据里,把我们关心的关键字段(比如所有公司名称)全部提取出来。
和前面一样,因为可能有多个Sheet、多份CSV,这里依然要做遍历处理,确保每张表的数据都被抽到。

这样就提取到了全部对应的数据内容啦

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

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

1.7 按唯一值匹配全量数据

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

1.8 LLM做最终格式整合

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

1.9 格式校验后输出

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

二、完整工作流总览

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

写在最后

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

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询

扫码登录
登录即表示您同意《53AI网站服务协议》
服务协议

欢迎您使用【53AI 官方网站】(以下简称“本网站”或“我们”)。本《会员服务协议》(以下简称“本协议”)是您(以下简称“会员”或“用户”)与【深圳市博思协创网络科技有限公司】之间关于注册、登录及使用本网站会员服务所订立的法律协议。

在您注册或登录前,请务必审慎阅读、充分理解各条款内容,特别是免除或限制责任的条款、知识产权条款、争议解决条款等。此类条款将以加粗形式提示您注意。 当您通过微信公众号授权、手机验证码验证或其他方式成功登录本网站时,即视为您已完全理解并同意接受本协议的全部内容。

一、 定义

本网站:指由【深圳市博思协创网络科技有限公司】运营的,域名为【53ai.com】的网站及相关移动端页面。

会员服务:指本网站向注册会员提供的知识库文章查阅、内容检索及其他相关增值服务。

知识库内容:指本网站发布的包括但不限于文字、图表、数据、研究报告、行业分析等数字化内容资源。

二、 账号注册与登录

登录方式:本网站支持以下登录方式,您可根据实际情况选择:

微信公众号授权登录:您同意将您的微信OpenID信息授权给本网站,用于创建或关联会员账号。

手机验证码登录:您需提供真实有效的手机号码,并通过短信验证码完成身份验证与登录/注册。

账号安全:您的账号仅限您本人使用,禁止赠与、借用、租用、转让或售卖。因您保管不善导致的账号被盗、密码泄露等损失,由您自行承担。

实名认证:根据相关法律法规要求,我们可能要求您在特定功能下完成实名认证。如您拒绝提供,可能无法使用部分或全部服务。

未成年人保护:若您未满18周岁,请在法定监护人的陪同下阅读本协议,并在征得监护人同意后使用本服务。

三、 服务内容与规范

知识库查阅权限:会员登录后,有权按照其会员等级对应的权限范围,在线浏览、检索本网站知识库中的相关文章及内容。

服务变更:我们有权根据业务发展需要,调整、变更或终止部分服务内容,并将以网站公告、公众号消息等方式提前通知。

禁止行为:您在使用服务时不得实施以下行为:

利用技术手段批量爬取、下载、转存知识库内容;

将知识库内容用于商业目的或未经授权地向第三方传播;

干扰本网站正常运行或侵犯其他用户合法权益;

发布违法违规信息或从事违反公序良俗的活动。

四、 知识产权声明

权利归属:本网站知识库中的排版设计、软件代码等内容的知识产权均归【公司全称】或原权利人所有,受《中华人民共和国著作权法》等法律保护。

有限许可:本网站授予会员一项非独占、不可转让、不可转授权的普通许可,仅限于个人学习、研究之目的在线查阅知识库内容。

侵权追责:未经书面许可,任何单位或个人不得以任何形式复制、转载、摘编、镜像、汇编或以其他方式使用上述内容。一经发现,我们保留追究其法律责任的权利。

五、 个人信息保护

我们重视对您个人信息的保护。关于我们如何收集、使用、存储和保护您的个人信息,请单独阅读 《隐私政策》。

您通过微信公众号授权或手机号验证所提供的信息,我们将严格按照《个人信息保护法》的规定处理,仅用于身份识别、服务提供及安全验证等必要用途。

您可以随时通过网站设置或联系客服行使查阅、更正、删除个人信息及撤回授权同意的权利。

六、 免责声明

内容准确性:知识库内容仅供参考,不构成专业建议。我们不对其完整性、准确性、时效性作任何明示或暗示的保证,您应自行判断并承担使用风险。

不可抗力:因自然灾害、政策法规变化、网络故障、第三方平台接口异常(如微信接口维护、运营商短信通道故障)等不可抗力导致的服务中断或延迟,我们不承担违约责任。

第三方链接:本网站可能包含指向第三方网站的链接,该等网站的内容和服务不受我们控制,请您自行甄别风险。

七、 违约责任

如您违反本协议约定,我们有权视情节采取警告、限制功能、暂停服务、注销账号等措施,并保留要求赔偿损失的权利。

如因您的违约行为导致我们遭受行政处罚、第三方索赔或商誉损失,您应承担全部赔偿责任(包括但不限于罚款、赔偿金、律师费、公证费等)。

八、 法律适用与争议解决

本协议的订立、执行和解释均适用中华人民共和国大陆地区法律。

因本协议产生的或与本协议有关的任何争议,双方应友好协商解决;协商不成的,任何一方均可向【公司所在地】有管辖权的人民法院提起诉讼。

九、 其他

本协议构成双方就本服务达成的完整协议,取代此前任何口头或书面约定。

本协议任一条款被认定为无效或不可执行的,不影响其他条款的效力。

我们对本协议享有最终解释权,并在法律允许的范围内保留随时修改的权利。修改后的协议一经公布即生效,继续使用服务即视为同意修订内容。


已查阅