在日常开发工作中,我们经常需要在Cursor 中操作Excel文件,但原生环境无法直接读取或写入Excel内容。本文将详细介绍如何使用开源的ExcelMCP来解决这个问题,让AI能够方便地处理Excel数据。
ExcelMCP是一个开源项目,它通过MCP协议让AI能够与Excel文件进行交互。项目地址:https://github.com/negokaz/excel-mcp-server

这个功能用于深入分析Excel文件的内部结构,包括工作表关系、数据类型、公式依赖等。
# 分析Excel文件结构
分析结果 = analyzeExcelStructure("D:\财务数据.xlsx")
# 返回结构示例
{
"fileName":"财务数据.xlsx",
"sheets":[
{
"name":"收入表",
"type":"data",
"rowCount":100,
"columnCount":10,
"relationships":[
{"relatedSheet":"支出表","type":"vlookup","keyColumn":"A"}
],
"dataValidations":[
{"range":"B2:B100","type":"decimal","min":0}
]
}
],
"formulas":[
{"sheet":"汇总表","cell":"C10","formula":"=SUM(收入表!B2:B100)"}
]
}

将Excel文件的结构信息导出为标准格式,便于文档化或导入其他系统。
# 导出为JSON格式
exportExcelStructure --file"D:\测试文件.xlsx"\
--format json \
--output"D:\structure.json"
# 导出为Markdown文档
exportExcelStructure --file"D:\测试文件.xlsx"\
--format markdown \
--output"D:\structure.md"\
--include-sample-data
# Excel文件结构分析报告
## 文件信息
- 文件名:测试文件.xlsx
- 工作表数:1
- 总数据量:3行 × 2列
## 工作表详情
### Sheet1
| 列 | 列名 | 数据类型 | 示例值 |
|----|------|----------|--------|
| A | 姓名 | 文本 | 小陈 |
| B | 年龄 | 数值 | 11 |
快速获取Excel文件中所有工作表的名称列表。
# 获取所有工作表名称
sheet_names = readSheetNames("D:\测试文件.xlsx")
# 返回结果
["Sheet1","数据汇总","图表","隐藏表"]
# 仅获取可见工作表
visible_sheets = readSheetNames("D:\测试文件.xlsx", include_hidden=False)
通过工作表名称读取特定工作表的数据。
file_pathsheet_namerangeinclude_formulas# 读取指定工作表全部数据
data = readDataBySheetName(
file_path="D:\测试文件.xlsx",
sheet_name="Sheet1"
)
# 读取指定范围数据
range_data = readDataBySheetName(
file_path="D:\测试文件.xlsx",
sheet_name="Sheet1",
range="A1:B3",
include_formulas=True
)
# 返回数据格式
{
"sheet_name":"Sheet1",
"data":[
["姓名","年龄"],
["小红",10],
["小明",11]
],
"range":"A1:B3",
"row_count":3,
"column_count":2
}
这是一个增强版的读取功能,支持更多智能特性。
# 智能读取数据
smart_data = readSheetData(
file_path="D:\测试文件.xlsx",
sheet_index=0,# 通过索引指定工作表
has_header=True,
auto_detect_types=True,
fill_na="",# 空值填充
convert_to=["date","number","string"]
)
# 返回结构化数据
{
"headers":["姓名","年龄"],
"rows":[
{"姓名":"小红","年龄":10},
{"姓名":"小明","年龄":11}
],
"statistics":{
"年龄":{
"min":10,
"max":11,
"avg":10.5
}
}
}

向指定名称的工作表写入数据,支持创建新工作表。
# 准备写入数据
test_cases =[
["用例编号","测试模块","测试点","优先级"],
["TC001","登录","正常登录","P0"],
["TC002","登录","密码错误","P1"],
["TC003","登录","账号锁定","P2"]
]
# 写入数据(创建新工作表)
writeDataBySheetName(
file_path="D:\测试用例.xlsx",
sheet_name="登录测试",
data=test_cases,
create_if_missing=True,
write_mode="overwrite",# 或 "append"
start_cell="A1"# 起始位置
)
# 追加数据
additional_cases =[
["TC004","登录","验证码错误","P1"]
]
writeDataBySheetName(
file_path="D:\测试用例.xlsx",
sheet_name="登录测试",
data=additional_cases,
write_mode="append"
)
提供更灵活的数据写入能力,支持复杂的数据结构和格式设置。
# 复杂写入操作
writeSheetData(
file_path="D:\报表.xlsx",
sheet_name="月度报表",
operations=[
{
"type":"write_data",
"range":"A1:D1",
"data":["月份","收入","支出","利润"],
"format":{
"bold":True,
"background_color":"#CCE5FF",
"font_size":12
}
},
{
"type":"write_formula",
"range":"D2",
"formula":"=B2-C2"
},
{
"type":"merge_cells",
"range":"A1:D1",
"merge":True
},
{
"type":"add_validation",
"range":"B2:B13",
"validation":{
"type":"decimal",
"min":0,
"max":1000000
}
}
]
)
当Excel文件被外部修改后,清理缓存确保读取到最新数据。
# 清理特定文件的缓存
clearFileCache("D:\测试文件.xlsx")
# 清理所有缓存
clearFileCache("*")
# 清理后重新读取
readSheetData("D:\测试文件.xlsx", sheet_index=0)


{
"mcpServers":{
"excel-mcp-server":{
"command":"npx",
"args":[
"--yes",
"@zhiweixu/excel-mcp-server"
],
"env":{
"LOG_PATH":"F:\\tmp\\mcpfiles",
"CACHE_MAX_AGE":"1",
"CACHE_CLEANUP_INTERVAL":"4",
"LOG_RETENTION_DAYS":"7",
"LOG_CLEANUP_INTERVAL":"24"
}
}
}
}
配置成功后展示如下:
首先创建一个测试Excel文件,路径为:/User/xxx/测试文件.xlsx
文件内容如下:
请读取下文件内容/Users/xxx/测试文件.xlsx


请在/Users/xxx/测试文件.xlsx 文件新增10个姓名、年龄和性别,要求姓名不一样,然后并在最后一行计算总人数和性别比例, 并生成一个年龄柱状图和性别饼状图



# 在现有工作表中创建表格
excel_create_table --file"D:\测试文件.xlsx"\
--sheet"Sheet1"\
--range"A1:B3"\
--name"人员信息表"
# 查看工作表信息
excel_describe_sheets --file"D:\测试文件.xlsx"
# 复制工作表
excel_copy_sheet --file"D:\测试文件.xlsx"\
--source"Sheet1"\
--target"Sheet1_备份"
后续如果要求可以下达执行命令,执行后的效果:

# 步骤1: 创建测试用例模板
template =[
["模块","测试点","前置条件","操作步骤","预期结果","实际结果","状态"],
["登录","正常登录","已注册账号","1.输入账号密码\n2.点击登录","跳转首页","",""]
]
# 步骤2: 写入Excel
写入文件 /Users/xxxx/测试用例.xlsx 工作表="功能测试" 数据=template
# 步骤3: AI智能补充
请分析现有测试用例,补充边界值测试场景并写入

实际运行的效果:

ExcelMCP为我们提供了一种便捷的方式,让AI能够直接操作Excel文件。通过本文介绍的功能和使用方法,你可以:
这大大提升了在Cursor中处理Excel文件的效率,特别适合测试用例管理、数据分析等场景。如果你想了解更多高级功能,可以查阅官方文档和源码进行深入学习。