dify可全自动解析excel财报并生成同比环比分析报告:上传命名合规的.xlsx文件→table extract结构化映射关键列→python节点精准计算变动率→llm节点输出专业中文解读,全程闭环无需api/sql/切换工具。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让Dify自动读取用户上传的Excel格式财务报表(如利润表、资产负债表),精准识别“营业收入”“净利润”“应收账款”等关键字段,计算其同比(2024 vs 2023)与环比(2024Q3 vs 2024Q2)变动率,并以自然语言生成带数值支撑的解读报告——整个流程不依赖外部API、不手动写SQL、不切换工具,全部在Dify工作流内闭环完成。
准备合规财报文件并命名
将原始报表保存为标准.xlsx格式,确保第一行为字段名,且至少包含“项目”列和两个时间列(例如“2023年期末余额”“2024年期末余额”或“2024Q2”“2024Q3”);【项目列必须唯一、无合并单元格、无空行,否则Table Extract节点会整行跳过】。
文件名须用英文+下划线+数字组合,例如“profit_statement_2024q3.xlsx”,禁止含中文空格、“&”“#”“()”等符号——Dify上传时对文件名编码敏感,出现任一非法字符将导致解析中断且无报错提示。
这一步操作起来很简单,直接把整理好的Excel拖进本地文件夹重命名即可。
创建工作流并配置文件输入节点
登录Dify控制台→左侧导航栏点击「Workflow」→右上角「+ New Workflow」→选择「Blank Workflow」。
在画布空白处双击添加「File Upload」节点;设置中关闭「Allow multiple files」,仅允许单文件上传;将「File type restriction」设为「xlsx, xls」,其他类型一律拦截。
点击节点右下角「⋯」→「Rename」,必须改名为「财报原始文件」——后续所有节点变量引用都依赖此名称,重命名后无法通过拖拽自动关联,【若跳过此步,整个工作流后续全部失效】。
用Table Extract结构化解析表格
从左侧组件栏拖入「Table Extract」节点,连接到「财报原始文件」输出端口。
配置时「Sheet name」留空(自动读取首sheet);「Header row index」填0;关键操作是「Column mapping」:手动将第1列映射为“item”,第2列映射为“value_2023”,第3列映射为“value_2024”——若报表含季度数据,则第2列映射为“value_2024q2”,第3列为“value_2024q3”。映射错误会导致后续所有计算结果完全失真。
使用AIsa生成图像与视频。仅需一个API密钥即可调用Gemini 3 Pro Image(图像)和Qwen Wan 2.6(视频)。
这一步不能靠猜测,必须打开Excel确认列序:比如“项目”在A列、“2024Q2”在B列、“2024Q3”在C列,就严格按A→item、B→value_2024q2、C→value_2024q3映射。
注入Python计算逻辑实现同比环比
拖入「Code」节点,连接至Table Extract输出;在代码编辑区粘贴以下Python脚本:
import pandas as pd
df = pd.DataFrame(table_data)
# 提取关键指标行
key_rows = df[df['item'].str.contains('营业收入|净利润|应收账款|存货|短期借款', case=False, na=False)]
if len(key_rows) == 0:
raise ValueError("未识别到关键财务指标,请检查'项目'列是否含标准名称")
# 计算同比(假设列名为value_2023/value_2024)或环比(value_2024q2/value_2024q3)
def calc_change(row):
if 'value_2024' in row.index and 'value_2023' in row.index:
yoy = (row['value_2024'] - row['value_2023']) / abs(row['value_2023']) if row['value_2023'] != 0 else float('inf')
return {'yoy_rate': round(yoy * 100, 2)}
elif 'value_2024q3' in row.index and 'value_2024q2' in row.index:
qoq = (row['value_2024q3'] - row['value_2024q2']) / abs(row['value_2024q2']) if row['value_2024q2'] != 0 else float('inf')
return {'qoq_rate': round(qoq * 100, 2)}
else:
return {}
result = key_rows.apply(calc_change, axis=1).tolist()
output = {'key_indicators': key_rows.to_dict('records'), 'changes': result}
注意:脚本会自动判断列名是否存在“2023/2024”或“q2/q3”字样,分别触发同比或环比逻辑;若列名不匹配,需先回退修改Table Extract的Column mapping。
调用LLM生成专业中文解读报告
拖入「LLM」节点,连接Code节点输出;系统提示词(System Prompt)设为:
“你是一名有10年经验的CFO,只分析财报数据,不编造、不推测、不生成代码。请严格基于输入的key_indicators和changes数据,用中文分三点输出:① 营业收入与净利润的同比/环比变动趋势及幅度;② 应收账款与存货的变动是否匹配营收趋势,指出异常信号;③ 给出一句总体健康度判断(如‘盈利质量稳健’‘现金流承压迹象初显’)。所有数值保留两位小数,单位统一用‘万元’‘%’。”
用户提示词(User Prompt)填:{{output}}。
模型选择Qwen2.5-7B或GLM-4(需已开通);温度值(Temperature)设为0.3——过高易产生模糊表述如“可能下滑”,过低则无法组织自然语言句式。










