TableMagic Skill
元数据
- 名称: tablemagic
- 版本: 2.5.1
- 描述: Excel 操作技能,提供工作簿/工作表/单元格/区域/格式/图表/分析/数据库/API/邮件/文件/二维码/发票/正则/目录/定时/PDF等 111 个工具
- 协议: MCP (Model Context Protocol) 2024-11-05
- 传输: stdio
- 运行时: .NET 8.0(self-contained,无需用户安装 .NET)
- 依赖: 无需安装 Excel(使用 ClosedXML)
- 技能市场: skillhub.cn(本仓库仅含文本文件,二进制通过 Gitee 链接下载)
安装
二进制文件获取(Agent 首次使用前必须执行)
skillhub.cn 不允许上传二进制文件,因此本仓库不包含 tablemagic.exe 和 LatoFont/ 字体。Agent 在首次调用本技能前,必须在技能安装目录下执行以下 PowerShell 脚本。脚本内置环境预检查、幂等检查、SHA-256 完整性校验,不满足时会返回明确错误并退出,不得在预检查失败时继续调用本技能。
下载源说明:
tablemagic.exe(约 55MB)通过 Gitee Release 附件下载(gitee raw 对大文件有大小限制,Release 附件不受此限制);LatoFont/字体(每个 < 1MB)通过 gitee raw 下载(锁定 commit hash,不可变)。参照 dual-layer-pdf 技能的安全模式。
$ErrorActionPreference = "Stop"
# ① 平台预检查:仅支持 Windows x64
$onWindows = ($null -eq $PSVersionTable.Platform) -or ($PSVersionTable.Platform -eq "Win32NT")
if (-not $onWindows) {
Write-Error "TableMagic 预编译二进制仅支持 Windows x64,当前平台为 $($PSVersionTable.Platform)。Linux/macOS 需从源码构建:dotnet publish TableMagic.Cli -c Release -r <RID> --self-contained"
exit 1
}
$arch = [System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture
if ($arch -ne [System.Runtime.InteropServices.Architecture]::X64) {
Write-Error "TableMagic 预编译二进制仅支持 x64 架构,当前为 $arch。ARM64/x86 需从源码构建对应 RID 的 self-contained 包"
exit 1
}
# ② 幂等检查:已安装则跳过
if (Test-Path "./prebuilt/tablemagic.exe") {
Write-Host "tablemagic.exe 已存在,跳过下载。如需重装请先删除 prebuilt/ 目录。"
} else {
New-Item -ItemType Directory -Force -Path "./prebuilt/LatoFont" | Out-Null
# ③ 下载 tablemagic.exe(Gitee Release 附件,不受 raw 大小限制)
$exeUrl = "https://gitee.com/aken721/table-magic/releases/download/v2.5.1.1/tablemagic.exe"
try {
Invoke-WebRequest -Uri $exeUrl -OutFile "./prebuilt/tablemagic.exe" -UseBasicParsing
} catch {
Write-Error "下载 tablemagic.exe 失败: $($_.Exception.Message)。请确认 Gitee release v2.5.1.1 已发布且含 tablemagic.exe 附件"
exit 1
}
# ④ SHA-256 完整性校验
$expectedHash = "5b6ffc90b8bb529e986f1e638489c33bbc54e020c4ab0a92a97b72b794b8aa1a"
$actualHash = (Get-FileHash -Path "./prebuilt/tablemagic.exe" -Algorithm SHA256).Hash.ToLower()
if ($actualHash -ne $expectedHash) {
Remove-Item "./prebuilt/tablemagic.exe" -Force
Write-Error "SHA-256 校验失败:预期 $expectedHash,实际 $actualHash。下载可能被篡改或中断,已删除文件。"
exit 1
}
# ⑤ 下载 LatoFont 字体(gitee raw,锁定 commit hash,文件小不受限制)
$commit = "3960b429dbfa2d944fff317a794c57b4c2379b3c"
$fontBase = "https://gitee.com/aken721/table-magic/raw/$commit/prebuilt/LatoFont"
@("Lato-Black","Lato-BlackItalic","Lato-Bold","Lato-BoldItalic","Lato-ExtraBold","Lato-ExtraBoldItalic","Lato-ExtraLight","Lato-ExtraLightItalic","Lato-Italic","Lato-Light","Lato-LightItalic","Lato-Medium","Lato-MediumItalic","Lato-Regular","Lato-SemiBold","Lato-SemiBoldItalic","Lato-Thin","Lato-ThinItalic") | ForEach-Object {
Invoke-WebRequest -Uri "$fontBase/$_.ttf" -OutFile "./prebuilt/LatoFont/$_.ttf" -UseBasicParsing
}
Invoke-WebRequest -Uri "$fontBase/OFL.txt" -OutFile "./prebuilt/LatoFont/OFL.txt" -UseBasicParsing
# ⑥ 字体完整性验证
$fontCount = (Get-ChildItem "./prebuilt/LatoFont" -Filter "*.ttf" -ErrorAction SilentlyContinue | Measure-Object).Count
if ($fontCount -ne 18) { Write-Error "LatoFont 不完整,仅 $fontCount/18 个 ttf,请重新执行本脚本"; exit 1 }
}
# ⑦ 可执行性验证
try { & "./prebuilt/tablemagic.exe" list-tools | Select-Object -First 1 | Out-Null }
catch {
Write-Error "tablemagic.exe 无法执行:$($_.Exception.Message)。可能被杀毒软件/SmartScreen 拦截,请添加信任后重试"
exit 1
}
Write-Host "TableMagic 安装完成" -ForegroundColor Green
前置条件
- 无需安装 .NET SDK 或运行时(self-contained,已内嵌 .NET 运行时)
- 无需安装 Excel(使用 ClosedXML)
- 无需安装打印机驱动(PDF 导出使用 QuestPDF + LatoFont)
- 仅支持 Windows x64(预编译二进制为 win-x64 目标)
- Linux / macOS / Windows ARM64 / Windows x86 需从源码自行构建对应 RID 的 self-contained 包
Agent 配置
在 Agent 的 MCP 配置文件中添加以下内容。command 指向技能安装目录下 prebuilt/tablemagic.exe 的完整路径。
标准配置(mcp-config.json)
本技能已附带 mcp-config.json,内容如下,Agent 可自动发现并注册:
{
"mcpServers": {
"tablemagic": {
"command": "./prebuilt/tablemagic.exe",
"args": ["mcp"]
}
}
}
绝对路径配置示例
例如技能安装到 C:\Skills\table-magic,则配置为:
{
"mcpServers": {
"tablemagic": {
"command": "C:/Skills/table-magic/prebuilt/tablemagic.exe",
"args": ["mcp"]
}
}
}
各 Agent 配置位置
| Agent | 配置文件路径 |
|-------|-------------|
| OpenClaw | ~/.openclaw/mcp.json |
| Hermes | ~/.hermes/mcp_config.json |
| WorkBuddy | ~/.workbuddy/mcp.json |
| QClaw | 项目根目录 qclaw.mcp.json |
| Trae Work | 项目根目录 .trae/mcp.json |
行为约束
可执行文件路径(重要)
必须使用技能安装目录下 prebuilt/tablemagic.exe,即 MCP 配置中 command 字段所指向的相对路径 ./prebuilt/tablemagic.exe。
- 禁止使用任何源码构建产物路径(如含
bin\、obj\、源码仓库目录的路径) - 禁止使用绝对路径硬编码到特定用户目录
mcp-config.json中已配置为./prebuilt/tablemagic.exe,Agent 应直接采用该配置,不得改写
参数引导
当用户 prompt 不明确或缺少必需参数时,必须向用户追问缺失的参数,不要猜测或使用默认值。具体规则:
- 必需参数缺失:返回错误信息,明确列出缺失的参数名称和描述,引导用户补充
- 参数值模糊:如用户说"创建一个表格"但未指定文件名,应追问"请提供工作簿文件名"
- 参数类型错误:如行号传入了字符串,应提示"row 参数应为整数"
- 一次只追问最关键的缺失参数,避免一次列出过多问题让用户困惑
性能优化(重要)
必须使用以下策略以获得最佳性能:
-
优先使用复合工具,避免多次单独调用:
- 创建工作簿+多工作表 → 用
create_workbook_with_sheets(一次调用),而非 create_workbook + N次 create_worksheet - 写入完整表格 → 用
write_table_data(一次调用),而非 N次 set_cell_value - 读取完整表格 → 用
read_table_data(一次调用),而非 N次 get_cell_value - 批量执行不同工具 → 用
batch_call(一次调用),而非多次 tools/call
- 创建工作簿+多工作表 → 用
-
禁止使用
tablemagic.exe call命令行方式逐个调用工具,这会为每次调用启动新进程,极其缓慢 -
必须通过 MCP 协议(
tools/call)调用工具,MCP 模式下单进程持久运行,无启动开销
鲁棒性与错误处理
Agent 在调用本技能的任意阶段遇到以下情况时,必须按对应策略处理,不得静默失败或编造结果。
1. 环境与平台(安装/启动阶段)
| 异常场景 | 检测方式 | Agent 必须采取的行动 |
|---------|---------|---------------------|
| 非 Windows 平台(Linux/macOS) | 执行下载脚本时预检查失败,或 MCP 启动返回非零退出码 | 停止调用,向用户明确提示:"TableMagic 预编译二进制仅支持 Windows x64,当前平台不支持。如需在 Linux/macOS 使用,请从源码构建:dotnet publish TableMagic.Cli -c Release -r linux-x64 --self-contained" |
| 非 x64 架构(ARM64/x86) | 预检查失败 | 同上,提示构建对应 RID 的 self-contained 包 |
| prebuilt/tablemagic.exe 不存在 | 调用前 Test-Path 为 false | 自动执行"安装"章节的下载脚本;若下载脚本再次失败,向用户报告并请求人工介入 |
| LatoFont/ 字体缺失或不完整(<18 个 ttf) | Get-ChildItem 计数 | 提示"PDF 导出所需字体缺失,正在重新下载…"并重新执行下载脚本 |
| 可执行文件路径非 prebuilt/tablemagic.exe | command 路径含 bin\ 或 obj\ 或源码目录或绝对路径硬编码 | 拒绝执行,提示必须使用技能安装目录下的 prebuilt/tablemagic.exe(即 mcp-config.json 中的相对路径) |
2. 下载与文件完整性
| 异常场景 | 检测方式 | Agent 必须采取的行动 |
|---------|---------|---------------------|
| Gitee 不可达 / 网络中断 | Invoke-WebRequest 抛异常 | 提示"无法连接 Gitee,请检查网络或代理设置",提供手动下载链接,不重试超过 2 次 |
| 下载文件损坏(执行返回异常退出码) | list-tools 非零退出 | 删除 prebuilt/ 重新下载一次;仍失败则提示用户检查磁盘空间/权限 |
| 磁盘空间不足 | 下载异常信息含 "space"/"磁盘" | 提示用户清理磁盘后重试 |
| 杀毒软件 / SmartScreen 拦截 | exe 存在但执行抛 Win32Exception 或被终止 | 提示用户将 prebuilt/tablemagic.exe 加入杀毒软件白名单 / 解除 SmartScreen 阻止 |
3. MCP 启动与运行时
| 异常场景 | 检测方式 | Agent 必须采取的行动 |
|---------|---------|---------------------|
| MCP 服务器启动失败(stdio 无响应) | 首次 tools/list 超时或连接错误 | 检查 command 路径是否正确 → 检查 exe 是否可独立运行(tablemagic.exe list-tools)→ 向用户报告完整错误 |
| 进程意外退出(MCP 连接中断) | 后续调用收到 EOF/连接重置 | 自动重启 MCP 进程一次;若仍失败,提示用户并停止重试 |
| 工具执行返回结构化错误 | result.Success = false | 解析 result.Error 与 result.MissingParams,按下方"工具执行错误"规则处理 |
4. 工具执行错误
- 必需参数缺失(result.MissingRequiredParams = true):必须向用户追问缺失参数,一次只问最关键的,不猜测默认值
- 参数类型错误(如 row 传入字符串):提示"row 参数应为整数",请用户修正
- 文件不存在 / 路径无效:提示用户确认路径,不自动创建无关文件
- 工作表/区域越界:提示有效范围,请用户调整
- 数据库连接失败:提示检查连接字符串、网络、驱动,不重试
- 外部依赖缺失(PaddleOCR):
ocr_invoice返回安装指南时,原样转达给用户,不替代执行 OCR - 其他执行失败:向用户说明错误描述与处理建议,询问是否尝试其他方式
5. 通用原则
- 不编造结果:任何工具失败时,不得伪造返回值或猜测数据,必须如实向用户报告错误
- 有限重试:同一操作最多重试 2 次(下载、MCP 重启),超过则请求人工介入
- 错误信息透传:将工具返回的错误描述、处理建议原样转达给用户,不截断不改写
- 降级而非中断:单个工具失败不应导致整个会话中断,应报告错误后继续响应用户后续指令
- 幂等安装:重复执行下载脚本应安全(覆盖写入),不因已存在而报错
工具清单
基础操作 (ExcelBase)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| get_worksheet_names | 获取所有工作表名称 | 无 | fileName |
| get_open_workbooks | 获取打开的工作簿列表 | 无 | 无 |
| get_workbook_metadata | 获取工作簿元数据 | 无 | fileName |
| batch_call | 批量执行多个工具调用(一次MCP调用执行多步操作) | calls | 无 |
| create_workbook_with_sheets | 创建工作簿并批量创建多个工作表 | fileName | sheetNames, sheetNamePrefix, sheetCount |
| write_table_data | 一次性写入完整表格(表头+数据) | fileName, sheetName, headers, data | startRow, startColumn, headerStyle, autoFit |
| read_table_data | 一次性读取完整表格 | fileName, sheetName | range, includeHeaders |
工作簿操作 (ExcelWorkbook)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| create_workbook | 创建新工作簿 | fileName | sheetName |
| open_workbook | 打开工作簿 | fileName | 无 |
| close_workbook | 关闭工作簿 | 无 | fileName |
| save_workbook | 保存工作簿 | 无 | fileName |
| save_workbook_as | 另存为新文件 | newFileName | fileName |
| delete_workbook | 删除工作簿文件 | fileName | 无 |
工作表操作 (ExcelSheet)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| activate_worksheet | 激活/切换工作表 | sheetName | fileName |
| create_worksheet | 创建新工作表 | sheetName | fileName |
| rename_worksheet | 重命名工作表 | oldSheetName, newSheetName | fileName |
| delete_worksheet | 删除工作表 | sheetName | fileName |
| copy_worksheet | 复制工作表 | sourceSheetName, targetSheetName | fileName |
| move_worksheet | 移动工作表位置 | sheetName, position | fileName |
| set_worksheet_visible | 设置工作表可见性 | sheetName, visible | fileName |
| get_worksheet_index | 获取工作表索引 | sheetName | fileName |
| freeze_panes | 冻结窗格 | 无 | fileName, sheetName, row, column |
| unfreeze_panes | 取消冻结窗格 | 无 | fileName, sheetName |
单元格操作 (ExcelCell)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| set_cell_value | 设置单元格值 | row, column, value | fileName, sheetName |
| get_cell_value | 获取单元格值 | row, column | fileName, sheetName |
| set_cell_formula | 设置单元格公式 | cellAddress, formula | fileName, sheetName |
| get_cell_formula | 获取单元格公式 | cellAddress | fileName, sheetName |
区域操作 (ExcelRange)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| set_range_values | 批量设置区域值 | rangeAddress, data | fileName, sheetName |
| get_range_values | 获取区域值 | rangeAddress | fileName, sheetName |
| copy_range | 复制区域 | sourceRange, targetRange | fileName, sheetName |
| clear_range | 清除区域内容 | rangeAddress | fileName, sheetName, clearType |
| get_used_range | 获取已使用范围 | 无 | fileName, sheetName |
| get_last_row | 获取最后行号 | 无 | fileName, sheetName |
格式设置 (ExcelFormat)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| set_cell_format | 设置单元格格式 | rangeAddress | fileName, sheetName, fontColor, backgroundColor, fontSize, bold, italic, horizontalAlignment, verticalAlignment |
| set_border | 设置边框 | rangeAddress, borderType | fileName, sheetName, lineStyle |
| merge_cells | 合并单元格 | rangeAddress | fileName, sheetName |
| unmerge_cells | 取消合并 | rangeAddress | fileName, sheetName |
| set_cell_text_wrap | 设置自动换行 | rangeAddress, wrap | fileName, sheetName |
| set_row_height | 设置行高 | rowNumber, height | fileName, sheetName |
| set_column_width | 设置列宽 | columnNumber, width | fileName, sheetName |
| insert_rows | 插入行 | rowIndex | fileName, sheetName, count |
| insert_columns | 插入列 | columnIndex | fileName, sheetName, count |
| delete_rows | 删除行 | rowIndex | fileName, sheetName, count |
| delete_columns | 删除列 | columnIndex | fileName, sheetName, count |
图表与分析 (ExcelChart/ExcelPivot/ExcelAnalysis/ExcelFinance)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| create_chart | 创建图表 | dataRange | fileName, sheetName, chartType, title |
| create_pivot_table | 创建数据透视表 | sourceRange, pivotSheetName | fileName, sheetName, rowFields, columnFields, valueFields |
| analyze_data | 分析数据 | range | fileName, sheetName |
| get_range_statistics | 获取统计信息 | range | fileName, sheetName |
| calculate_financial_ratio | 计算财务比率 | revenueRange, costRange | fileName, sheetName |
| calculate_profit_margin | 计算利润率 | revenueRange, profitRange | fileName, sheetName |
参数说明
通用可选参数
大多数工具支持以下可选参数,不指定时使用当前活跃的工作簿/工作表:
| 参数 | 类型 | 说明 | |------|------|------| | fileName | string | 工作簿文件名 | | sheetName | string | 工作表名称 |
数据格式约定
- 行列号:从 1 开始,与 Excel 一致
- 范围地址:标准 Excel 格式,如
A1:D10、B:B - 颜色:支持中文名称(红色、蓝色)和十六进制(#FF0000)
- 批量数据:JSON 二维数组,如
[["姓名","年龄"],["张三",25]] - 图表类型:column / line / pie / bar / area / scatter
数据处理 (ExcelData)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| split_sheet_by_column | 按列分表 | columnName | fileName, sheetName, dataStartRow |
| split_and_export | 分表并导出独立文件 | columnName, outputFolder | fileName, sheetName, fileFormat |
| merge_sheets | 合并多个工作表 | 无 | fileName, sheetNames, outputSheetName, includeHeader |
| merge_workbooks | 合并多个工作簿 | folderPath | fileName, includeSubfolders, skipEmptySheets |
| export_sheets | 批量导出工作表 | outputFolder | fileName, sheetNames, fileFormat |
| delete_sheets | 批量删除工作表 | sheetNames | fileName |
| transpose_columns | 宽表转长表 | startColumn, fieldName | fileName, sheetName |
| create_multiple_sheets | 批量创建工作表 | count | fileName, baseName |
| generate_payslips | 生成工资条 | 无 | fileName, sheetName, outputSheetName |
数据库 (ExcelDatabase)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| connect_database | 连接数据库获取表列表 | dbType, connectionString | 无 |
| execute_query | 执行SQL查询写入Excel | dbType, connectionString, query | outputFileName, outputSheetName |
| export_table_to_excel | 导出数据库表到Excel | dbType, connectionString, tableName | outputFileName, outputSheetName |
| get_table_structure | 获取表结构信息 | dbType, connectionString, tableName | 无 |
支持数据库类型:sqlserver、mysql、postgresql、sqlite
API接口 (ExcelApi)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| fetch_api_data | 调用REST API获取数据 | url | method, headers, body, outputFileName, outputSheetName, dataPath |
| test_api_connection | 测试API连接 | url | method, headers |
增强图表 (ExcelChartEnhance)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| create_word_cloud | 根据文本列生成词云图片 | textColumn | fileName, sheetName, maxWords, width, height, outputPath |
| create_dynamic_chart | 创建动态图表(数据透视+基础图表) | categoryColumn, valueColumn | fileName, sheetName, chartType, title |
| create_comparison_chart | 创建多系列对比图 | categoryColumn, valueColumns | fileName, sheetName, chartType, title |
| create_pareto_chart | 创建帕累托图(二八分析) | categoryColumn, valueColumn | fileName, sheetName |
| create_histogram | 创建直方图 | valueColumn | fileName, sheetName, binCount |
| create_box_plot | 创建箱线图(五数概括) | valueColumns | fileName, sheetName |
词云使用 SkiaSharp 渲染为 PNG 图片;帕累托/直方图/箱线图通过数据预处理+基础图表实现。
邮件群发 (ExcelMail)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| configure_smtp | 配置SMTP服务器 | host, port, username, password | enableSsl, fromAddress |
| send_email | 发送单封邮件 | to, subject, body | cc, bcc, isHtml, attachments |
| batch_send | 批量发送邮件 | emailColumn, subjectColumn, bodyColumn | fileName, sheetName, ccColumn, isHtml |
| test_smtp | 测试SMTP连接 | host, port, username, password | enableSsl |
| preview_email | 预览邮件 | to, subject, body | cc, isHtml |
文件操作 (ExcelFile)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| list_files | 列出文件信息 | folderPath | pattern, includeSubfolders |
| batch_rename | 批量重命名文件 | oldNameColumn, newNameColumn | folderPath, fileName, sheetName |
| batch_copy | 批量复制文件 | fileNameColumn, targetFolder | sourceFolder, fileName, sheetName |
| batch_move | 批量移动文件 | fileNameColumn, targetFolder | sourceFolder, fileName, sheetName |
| batch_delete | 批量删除文件 | fileNameColumn | folderPath, fileName, sheetName |
| create_folder | 创建文件夹 | folderPath | 无 |
| get_file_info | 获取文件详细信息 | filePath | 无 |
| open_folder | 打开文件夹 | folderPath | 无 |
二维码/条形码 (ExcelQR)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| generate_qr_code | 为指定列数据生成二维码图片 | columnNames, outputFolder | fileName, sheetName, size |
| generate_barcode | 为指定列数据生成条形码图片(Code128) | columnName, outputFolder | fileName, sheetName, width, height |
| scan_qr_code | 扫描图片中的二维码返回内容 | imagePaths | outputFileName, outputSheetName |
| scan_qr_code_folder | 批量扫描文件夹中所有图片的二维码 | folderPath | includeSubfolders, outputFileName, outputSheetName |
使用 ZXing.Net + SkiaSharp 实现,无需安装额外运行时。columnNames 为 JSON 数组格式如 ["网址","编号"]。
发票识别 (ExcelInvoice)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| import_xml_invoice | 导入XML电子发票到Excel | xmlPath | outputFileName, outputSheetName |
| batch_import_invoices | 批量导入文件夹中XML发票 | folderPath | outputFileName, outputSheetName, includeSubfolders |
| get_invoice_fields | 获取发票可提取字段列表 | 无 | 无 |
| export_invoice_summary | 导出发票汇总表 | outputFileName | outputSheetName |
| ocr_invoice | OCR识别发票图片/PDF | imagePath | outputFileName, outputSheetName |
OCR 发票识别说明:
- 自动检测系统是否安装 PaddleOCR(尝试
paddleocr --version或python -c "import paddleocr") - 已安装:调用 PaddleOCR 进行 OCR,用正则提取发票号码、日期、买卖方、金额等字段,写入 Excel
- 未安装:返回详细安装指南(pip/conda/国内镜像三种方式)
- 支持图片(png/jpg/bmp)和 PDF 格式
- 安装命令:
pip install paddlepaddle paddleocr,PDF 还需pip install pymupdf
正则提取 (ExcelRegex)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| extract_by_regex | 正则提取内容到新列 | columnName | fileName, sheetName, patternType, pattern |
| get_regex_patterns | 获取预定义正则模式列表 | 无 | 无 |
| validate_regex | 验证正则表达式 | pattern | 无 |
目录页 (ExcelToc)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| create_toc_sheet | 创建目录表 | 无 | fileName, tocSheetName, includeHiddenSheets |
| create_sheets_from_toc | 根据目录建表 | linkColumnName | fileName, createSheets |
| update_toc_hyperlinks | 更新目录超链接 | columnName | fileName |
定时任务 (ExcelSchedule)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| create_task | 创建定时任务 | taskName, cronExpression, toolName | arguments, description |
| list_tasks | 列出所有任务 | 无 | 无 |
| delete_task | 删除任务 | taskName | 无 |
| enable_task | 启用任务 | taskName | 无 |
| disable_task | 禁用任务 | taskName | 无 |
| run_task | 立即执行任务 | taskName | 无 |
Word文档生成 (DocumentGeneration)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| generate_documents | 批量生成Word文档 | templatePath, outputFolder | fileName, sheetName, nameColumn, format |
| preview_document | 预览文档效果 | templatePath | fileName, sheetName |
PDF导出 (ExcelPdf)
| 工具 | 描述 | 必需参数 | 可选参数 |
|------|------|---------|---------|
| export_sheet_to_pdf | 导出工作表为PDF | pdfPath | fileName, sheetName |
| export_workbook_to_pdf | 导出工作簿为PDF | pdfPath | fileName |
| batch_export_to_pdf | 批量导出为PDF | outputFolder | fileName, sheetNames |
| export_range_to_pdf | 导出区域为PDF | pdfPath, rangeAddress | fileName, sheetName |
使用 QuestPDF(Community License)实现,无需安装 Excel 或打印机驱动。导出为 A4 横向带表格边框的 PDF,使用 LatoFont 字体。
使用示例
用户: 创建一个销售数据表
Agent: 调用 create_workbook(fileName: "销售数据.xlsx", sheetName: "销售")
用户: 在A1写入标题
Agent: 调用 set_cell_value(fileName: "销售数据.xlsx", sheetName: "销售", row: 1, column: 1, value: "销售记录")
用户: 给标题加粗居中
Agent: 调用 set_cell_format(rangeAddress: "A1", bold: true, horizontalAlignment: "center")
用户: 分析B列的数据
Agent: 调用 get_range_statistics(range: "B:B")
CLI 直接调用(仅用于调试)
# 列出工具
./prebuilt/tablemagic.exe list-tools
# 创建工作簿
./prebuilt/tablemagic.exe call create_workbook --args '{"fileName":"test.xlsx"}'
# 写入数据
./prebuilt/tablemagic.exe call set_cell_value --args '{"fileName":"test.xlsx","row":1,"column":1,"value":"Hello"}'
# 读取数据
./prebuilt/tablemagic.exe call get_range_values --args '{"fileName":"test.xlsx","rangeAddress":"A1:D10"}'
# 批量执行
./prebuilt/tablemagic.exe batch calls.json
仓库结构
table-magic-skill/
├── skill.md # 技能描述(含下载指令 + 工具清单)
├── mcp-config.json # MCP配置(command 指向 ./prebuilt/tablemagic.exe)
├── README.md # 说明文档
└── prebuilt/ # 预编译二进制(不在仓库中,首次使用前从 Gitee raw 下载)
├── tablemagic.exe # self-contained .NET 8 可执行文件(win-x64)
└── LatoFont/ # QuestPDF PDF导出所需 Lato 字体(19个文件)
微信扫一扫