基于 LangGraph 的智能化 Excel 数据分析工具,让自然语言成为你的数据分析利器!
ExcelMind 是一个专为 Excel 数据分析设计的 AI 助手,能够理解自然语言并智能分析数据。支持多轮对话、流式输出、ECharts 图表可视化和完整的思考过程展示,让数据分析变得简单直观。
🔱 Fork 声明:本项目基于 Gen-Future/ExcelMind 进行二次开发,新增了 Claude 系列模型原生适配、模型调用失败的容错降级机制、v2.0 写入能力 以及 CSV 文件支持。
视频展示了 ExcelMind 的核心功能:自然语言查询、智能联表、知识库检索等
| 数据分析 | 图表生成 | 数据写入 |
|---|---|---|
![]() |
![]() |
![]() |
| Agent 调用过程 | 工具执行日志 |
|---|---|
![]() |
![]() |
- 输入文件:
docs/按部门统计消费金额.xlsx - 输出文件:
docs/按部门统计消费金额_modified.xlsx
- 自然语言查询 - 用中文直接提问,无需编写代码或公式
- 多轮对话 - 支持上下文关联的连续追问(如"和上个月相比呢?")
- 流式输出 - 实时显示 AI 思考过程和回答,响应更流畅
- 智能工具调用 - 自动选择合适的数据分析工具,展示完整推理链路
- 数据筛选 - 多条件筛选、排序、指定返回列
- 聚合统计 - 支持先筛选再聚合
- 分组聚合 - 灵活的分组统计功能
- 关键词搜索 - 可限制搜索范围
- 列统计 - 支持筛选后统计
- 唯一值获取 - 支持筛选后获取
- 数据预览 - 快速查看数据结构
- 工作表切换 - 在多 Sheet 文件中自由切换
- 时间获取 - 处理相对时间查询
- 数学计算 - 批量精确计算
- 图表生成 - ECharts 可视化,AI 自动推荐图表类型
- 单元格写入 - 写入单个单元格的值
- 批量写入 - 写入指定范围的数据
- 公式写入 - 写入 Excel 公式(如
=SUM(A1:A10)) - 公式读取 - 读取单元格的公式
- 行操作 - 插入、删除行
- 文件保存 - 保存到副本或原始文件
- 文件导出 - 导出到指定位置或浏览器下载
- 字体设置 - 字体名称、大小、加粗、斜体、颜色
- 背景填充 - 单元格背景色设置
- 对齐方式 - 水平/垂直对齐、自动换行
- 边框设置 - 边框样式、颜色
- 数字格式 - 千分位、百分比、日期、货币等
- 合并单元格 - 合并/取消合并单元格
- 行高列宽 - 设置行高、列宽、自动调整
- 多表协同 - 同时管理多个 Excel 表格,支持智能联表
- CSV 支持 - 完整支持 CSV 文件的加载、分析和导出
- 本地知识库 - 基于 Chroma 向量数据库的私有知识存储
- 双主题模式 - 亮色/暗色主题一键切换
- 意图过滤 - 自动拒绝与数据无关的闲聊
- 双引擎架构 - pandas(分析)+ openpyxl(写入),各司其职
- 文件下载 - 浏览器下载修改后的文件,不影响原始文件
ExcelMind/
├── config.yaml # 配置文件(需从 config.example.yaml 复制)
├── config.example.yaml # 配置文件模板
├── pyproject.toml # 项目依赖
├── README.md # 使用说明
├── LICENSE # MIT许可证
├── knowledge/ # 知识库文件目录
│ └── *.md # Markdown 格式知识文件
├── .vector_db/ # Chroma 向量数据库(自动生成)
├── docs/ # 文档目录
│ ├── card.png # 社区交流名片
│ └── BLUEPRINT_v2.md # v2.0 技术蓝图
└── src/
└── excel_agent/
├── __init__.py
├── main.py # 程序入口
├── api.py # FastAPI 接口
├── config.py # 配置管理
├── excel_loader.py # Excel 加载器(多表管理)
├── excel_document.py # Excel 文档类(双引擎)
├── knowledge_base.py # 知识库管理
├── skill_manager.py # 技能管理器
├── skills.py # 内置技能定义
├── stream.py # 流式对话核心
├── tools.py # 数据分析工具(含写入和格式化)
└── frontend/
└── index.html # Web 界面
- Python版本:3.11+
- 包管理器:uv(推荐)或 pip
- API Key:OpenAI 兼容的 API Key
-
克隆项目:
git clone https://github.com/cloud666666666/ExcelMind.git cd ExcelMind -
安装依赖:
# 使用 uv(推荐) uv sync # 或使用 pip pip install -e .
-
配置文件:
# 复制配置模板 cp config.example.yaml config.yaml # 编辑配置文件,填入 API Key
-
启动服务:
# Web 服务模式(推荐) uv run python -m excel_agent.main serve # 命令行模式 uv run python -m excel_agent.main cli --excel your_file.xlsx
-
开始使用: 打开浏览器访问
http://localhost:8000
model:
# 当前使用的提供商
active: "self_hosted"
# 各提供商配置
providers:
self_hosted:
provider: "anthropic"
model_name: "claude-3-5-haiku-20241022"
api_key: "your-api-key"
base_url: "https://your-api-endpoint"
temperature: 0.1
max_tokens: 8192
fallback_models:
- "gemini-2.5-pro"
excel:
max_preview_rows: 200
default_result_limit: 200
max_result_limit: 1000
server:
host: "127.0.0.1"
port: 8000也可使用环境变量配置:
export OPENAI_API_KEY="your-api-key"
export OPENAI_BASE_URL="your-api-base-url"| 参数 | 说明 | 示例 |
|---|---|---|
active |
使用的模型提供商 | self_hosted |
model_name |
模型名称 | claude-3-5-haiku-20241022 |
api_key |
API 密钥 | sk-xxx |
base_url |
API 端点(可选) | https://api.openai.com/v1 |
temperature |
温度参数 | 0.1 |
max_tokens |
最大 token 数 | 8192 |
fallback_models |
降级模型列表 | ["gemini-2.5-pro"] |
- 拖拽 Excel 或 CSV 文件到页面
- 或点击上传区域选择文件
- 支持
.xlsx、.xls、.xlsm、.csv格式 - 支持同时上传多个文件
在聊天框输入自然语言问题,例如:
- "这个表有多少行数据?"
- "按分公司统计销售总额"
- "帮我画个饼图展示各部门占比"
- "2024年11月的数据明细"
v2.0 支持通过自然语言修改 Excel 数据:
- "把 A1 单元格写入 100"
- "在 B1 写入求和公式 =SUM(A1:A10)"
- "把标题行加粗"
- "给表格添加边框"
- "设置 A 列背景为黄色"
修改完成后,点击页面左侧的「下载文件」按钮,即可下载修改后的 Excel 文件。
注意:所有修改操作默认保存到工作副本,不会影响原始文件。
启动服务后访问 http://localhost:8000/docs 查看完整 Swagger 文档。
| 接口 | 方法 | 描述 |
|---|---|---|
/ |
GET | Web 界面 |
/upload |
POST | 上传 Excel/CSV 文件 |
/load |
POST | 通过路径加载 Excel/CSV |
/chat/stream |
POST | 流式对话(推荐) |
/chat |
POST | 非流式对话 |
/download |
GET | 下载修改后的文件 |
/status |
GET | 获取当前状态 |
/reset |
POST | 重置 Agent |
# 上传 Excel 或 CSV
curl -X POST "http://localhost:8000/upload" \
-F "file=@your_file.xlsx" # 或 your_file.csv
# 流式对话
curl -X POST "http://localhost:8000/chat/stream" \
-H "Content-Type: application/json" \
-d '{
"message": "按部门统计销售额",
"history": []
}'
# 下载修改后的文件
curl -O "http://localhost:8000/download"A: 环境问题
- ✅ 确保 Python 版本 >= 3.11
- ✅ 确保已正确安装依赖:
uv sync或pip install -e . - ✅ 确保
config.yaml文件存在且配置正确
A: 配置问题
- ✅ 检查
api_key是否正确 - ✅ 检查
base_url是否可访问 - ✅ 检查网络代理设置
A: 文件问题
- ✅ 确保文件格式为
.xlsx、.xls、.xlsm或.csv - ✅ 检查文件是否损坏
- ✅ 检查文件大小是否过大
A: 浏览器问题
- ✅ 使用现代浏览器(Chrome、Firefox、Edge)
- ✅ 检查浏览器控制台是否有错误
A: 下载文件
- ✅ 点击页面左侧的「下载文件」按钮
- ✅ 浏览器会自动下载修改后的 Excel 文件
- ✅ 原始文件不会被修改
FROM python:3.11-slim
WORKDIR /app
COPY . .
RUN pip install uv && uv sync
EXPOSE 8000
CMD ["uv", "run", "python", "-m", "excel_agent.main", "serve"]docker build -t excel-mind .
docker run -p 8000:8000 -e OPENAI_API_KEY=your-key excel-mind- Python 3.11 - 主要开发语言
- LangGraph - Agent 工作流框架
- LangChain - LLM 应用框架
- FastAPI - Web 服务框架
- Pandas - 数据分析引擎
- openpyxl - Excel 写入引擎
- Chroma - 向量数据库
- ECharts - 图表可视化
# 安装开发依赖
uv sync --dev
# 运行测试
uv run pytest
# 代码格式化
uv run ruff format .- ✅ CSV 文件支持: 完整支持 CSV 文件的加载、分析和导出
- 支持
.csv格式文件上传和拖拽 - CSV 文件自动转换为内部工作表处理
- 支持导出为 CSV 或 Excel 格式
- 支持
- ✅ 双引擎架构: pandas(分析)+ openpyxl(写入)
- ✅ 写入能力: 单元格写入、批量写入、公式写入
- ✅ 格式化工具: 字体、背景、边框、对齐、数字格式
- ✅ 合并单元格: 合并/取消合并单元格
- ✅ 行高列宽: 设置行高、列宽、自动调整
- ✅ 文件下载: 浏览器下载修改后的文件
- ✅ Skills 架构: 参考 Claude Code Skills 重构技能系统,支持模块化技能加载
- ✅ 状态管理: processing/idle 状态事件
- ✅ 新增工作表切换功能(switch_sheet)
- ✅ 修复 LangGraph 递归限制问题
- ✅ 新增 Anthropic 原生 API 支持
- ✅ 新增降级模型(fallback_models)配置
- ✅ 优化流式输出逻辑
- ✅ 更新依赖版本
- ✅ 迁移到 LangChain ReAct Agent
- ✅ 实现真正的流式输出
- ✅ 添加可折叠思考过程
- ✅ 修复工具描述和亮色模式 UI
- ✅ 基础 Excel 数据分析功能
- ✅ 自然语言查询
- ✅ 多轮对话支持
- ✅ ECharts 图表可视化
- ✅ 本地知识库
如果遇到问题:
- 检查配置文件是否正确
- 查看控制台输出的错误信息
- 提交 Issue 到 GitHub 仓库
如果这个项目对您有帮助,欢迎请作者喝杯咖啡☕
您的支持就是作者开发和维护项目的动力🚀
扫码支持开发者,您的每一份心意都是我们前进的动力!
如果您有以下需求,欢迎联系作者:
- 🚀 新功能建议 - 希望添加特定功能
- 🤝 商业合作 - 定制开发需求
- 🛠️ 技术支持 - 专业问题解答
- 💼 项目合作 - 相关项目合作机会
微信号: wyh2353493891
添加微信时请备注:ExcelMind项目咨询
- 本工具仅供学习和个人使用
- 请勿将敏感数据上传至公网部署的服务
- 作者不对因使用本工具导致的任何数据泄露负责
- AI 分析结果仅供参考,请自行验证重要数据
📊 让数据分析变得简单!
💡 提示:首次使用建议查看演示视频,快速了解各项功能。





