目录

DifyDeepSeek-Excel数据一键可视化创建步骤案例echarts助手.yml文档表格转图表根据表格绘制图表Excel绘制图表

Dify+DeepSeek | Excel数据一键可视化(创建步骤案例)(echarts助手.yml)(文档表格转图表、根据表格绘制图表、Excel绘制图表)

功能:输入文档或表格————>绘制图表

创建步骤

点击创建Chatflow

https://i-blog.csdnimg.cn/direct/c947a932febc41edbe645e68de08ff91.png

echart助手

https://i-blog.csdnimg.cn/direct/863515b9e3584368b7e2ae69b5b5ca15.png

删除已有节点

选中按Del:

https://i-blog.csdnimg.cn/direct/fd69f9a422a64da7b4bf809d07ac23a4.png

https://i-blog.csdnimg.cn/direct/0273303adc6e4fdb8b132702ad821328.png

创建上传文件节点

点击“开始”,创建输入字段text(文件路径或url)

https://i-blog.csdnimg.cn/direct/f8cab57e66f041eeac39f0adae7aadfb.png

https://i-blog.csdnimg.cn/direct/ff3c9b71c6014577887ab72bf78be6db.png

https://i-blog.csdnimg.cn/direct/f97d9130bdf141a28c9a02ba4f60af78.png

创建文档提取器

https://i-blog.csdnimg.cn/direct/f97615963f034903b07936f3fc4847c4.png

添加text字段输入:

https://i-blog.csdnimg.cn/direct/63b87e67c6c24a60ab2f23f40ba53462.png

https://i-blog.csdnimg.cn/direct/e87a51f369dd4c1185b4cfca535d0784.png

为文档提取器输出创建 Excel转csv 节点

新建节点

https://i-blog.csdnimg.cn/direct/359672c82fea43e690258bcacb24a9cd.png

模型我选择deepseek-reasoner

https://i-blog.csdnimg.cn/direct/eb0dbbb3aa334f7d812e3fd347b189bd.png

按照以下格式填入prompt(输入数据选择 文档提取器/(x)text

#角色
你是一个数据整理专家删除数据格式的整理和格式的转换
#数据
 文档提取器/(x)text
#任务
将数据转换成csv格式

https://i-blog.csdnimg.cn/direct/6e210e85248442b1aacaf1fe5ffcf606.png

https://i-blog.csdnimg.cn/direct/2b3eaa127ee145968e01ca2b4538737a.png

修改节点名称为 Excel转csv

https://i-blog.csdnimg.cn/direct/73c6706a662c400e897a26cbd2453f9b.png

Excel转csv 节点创建参数提取器节点

新建节点

https://i-blog.csdnimg.cn/direct/eca8317a1e6d435f814bfc2c1a2fed0f.png

设置指令

#任务
-提取csv格式的字符串

https://i-blog.csdnimg.cn/direct/a522131a66774a06bff272e9064e8e0f.png

设置模型

https://i-blog.csdnimg.cn/direct/1939fc790f9148418c3f7ce4648f4831.png

https://i-blog.csdnimg.cn/direct/2f7a31a7899f46689f95ba14de1dfb08.png

设置输入变量

https://i-blog.csdnimg.cn/direct/996e9732335840559f50aaedc52a7ee2.png

https://i-blog.csdnimg.cn/direct/0da24d2ac37644f6a28dc98e663338f5.png

添加提取参数 csv_data

https://i-blog.csdnimg.cn/direct/564f78afa85a4ac8b96774a5b6304359.png

https://i-blog.csdnimg.cn/direct/189963eef6cd4392a3a9f4348a67b952.png

https://i-blog.csdnimg.cn/direct/56fd457047a04069bf116f0ef8a43d92.png

为参数提取器节点创建代码执行节点

新建节点

https://i-blog.csdnimg.cn/direct/55e6d54e32a3472b93a4059c6033e68a.png

https://i-blog.csdnimg.cn/direct/5cc8c53c0909403f815a3faff45256f0.png

代码填入

import csv
import json

def main(csv_data):
    # 解析CSV
    reader = csv.DictReader(csv_data.strip().splitlines())
    rows = list(reader)
    
    # 自动识别列结构
    headers = reader.fieldnames
    if not headers or len(headers) < 2:
        return {'output': 'Error: 需要至少两列数据(1个分类列+1个数值列)'}
    
    # 默认第一列为分类轴,其余为数值列
    category_col = headers[0]
    value_columns = headers[1:]
    
    # 提取数据
    categories = [row[category_col] for row in rows]
    series_data = [
        {
            "name": col,
            "type": "bar",
            "data": [float(row[col]) for row in rows]  # 处理浮点数
        } for col in value_columns
    ]
    
    # 构建ECharts配置
    echarts_config = {
        "xAxis": {"type": "category", "data": categories},
        "yAxis": {"type": "value"},
        "series": series_data
    }
    
    # 返回结果
    return {'output': f'```echarts\n{json.dumps(echarts_config, ensure_ascii=False)}\n```'}

代码解释

以下是对该代码的详细技术解析:

1. 流程架构
  • 输入:接收CSV格式的原始字符串数据

  • 处理:通过三层转换 pipeline:

    CSV文本 → Python字典结构 → ECharts JSON配置 → Markdown代码块封装
  • 输出:符合Markdown扩展语法规范的ECharts图表代码块

2. 核心算法
  • 列智能识别算法:采用启发式规则

    if len(headers) >=2:
        第一列 = 分类轴
        后续列 = 数值系列
    else:
        触发错误处理
  • 类型强制转换: float(row[col]) 实现字符串到数值的类型安全转换

3. ECharts配置生成
  • 生成符合Apache ECharts v5+规范的配置结构
  • 动态构建坐标系:
    • X轴:自动映射分类维度
    • Y轴:自动推断为数值轴
  • 系列数据采用bar(柱状图)可视化编码
4. 异常处理边界
  • 列数校验:强制要求至少包含2列数据
  • 浮点转换:假设所有数值列均可转换为float类型(需注意潜在TypeError风险)
5. 运维增强特性
  • 输入数据规范化:通过 strip().splitlines() 处理不同平台的换行符差异
  • Unicode安全: ensure_ascii=False 确保中文等字符正确显示
  • 结构化错误消息:返回标准字典格式,方便日志采集和监控

该代码特别适用于运维监控场景下的自动化报表生成,可将Zabbix、Prometheus等监控系统导出的CSV指标数据快速转换为可交互的可视化图表。

为执行代码节点添加直接回复节点

创建节点

https://i-blog.csdnimg.cn/direct/b063889806804c6bb65f1fa1a15e0614.png

输入直接回复内容(注意我修改了部分变量名,可能跟前面不兼容)

https://i-blog.csdnimg.cn/direct/78d09ef4f8f243f58542fd3337c20dc3.png

filePath:
{{#1741057279322.filePath#}}
</br>

文档提取器text:
{{#1741058246976.text#}}
</br>

Excel转csv, csv text:
{{#1741058730753.text#}}
</br>

参数提取器csv_data:
{{#1741065751183.csv_data#}}
</br>

代码执行output:
{{#1741082638678.output#}}

节点测试 (无效)

测试 文档提取器 (Excel转csv失败了,改成Markdown转csv)

运行

https://i-blog.csdnimg.cn/direct/c7db97a4aa8044429afdfaeab01ce960.png

https://i-blog.csdnimg.cn/direct/42c897816be445d38f0b49526415cccd.png

https://i-blog.csdnimg.cn/direct/3a2e4d48d2f640329e163f24410c6672.png

我的dify见鬼了,提取excel都是空的

https://i-blog.csdnimg.cn/direct/8d52c85a652740ccb2b1713291807259.png

只能修改方案了,将后面的 Excel转csv 改成 Markdown转csv

https://i-blog.csdnimg.cn/direct/e986a938da8f495a8b4efb8655772d02.png

不过提示词貌似都不用改。

测试提取markdown(没有问题)

https://i-blog.csdnimg.cn/direct/5fb980c416a0448da469a4be330ecc16.png

测试运行

点击预览,然后上传文件

https://i-blog.csdnimg.cn/direct/d43b16d00ec34e39a3f1aa091766fbcd.png

在聊天框随便输入内容然后发送

https://i-blog.csdnimg.cn/direct/6cf78c16e2ad4ba3b6a22cb3e613a20c.png

然后工作流就会逐个运行,最后输出结果

https://i-blog.csdnimg.cn/direct/14812075b2b24f859752596194c2e211.png

https://i-blog.csdnimg.cn/direct/23c0e08ea4ab4e9fa583115ace35a7e8.png

https://i-blog.csdnimg.cn/direct/e9c1b012039a4707a453787f9ea5d446.png

点开右边工作流节点,能看到各个节点输入输出,方便调试

https://i-blog.csdnimg.cn/direct/c5015e31ca7f490daffe7c272f2181d5.png