预算包含三个工作表,财务部门希望在第二个工作表上更改两个单元格。将整个工作簿交给 AI 代理去 “更新 Q3” 会导致它重新生成全部三个工作表。使用本地运行的 GroupDocs.Editor MCP 服务器,Claude、Cursor 或 Copilot 只提取该工作表为可编辑的 HTML,进行你要求的更改后再保存回原工作簿的副本,这样其他工作表就永远不会经过模型。幻灯片的处理方式相同:

在 budget.xlsx 的第 2 张工作表(Q3)中,将 Travel 设置为 12,500 并将 Training 重命名为 “Training (external)”。其余工作表保持不变。

一步步的操作说明请参见文档: 如何编辑单个工作表或幻灯片并将其拼回原文件。

为什么不把整个文件交给代理?

因为模型无法容纳整个工作簿。它只能处理文本。你提供的每个工作表都可能被模型 “好心” 地重新表述:数字格式被改变,公式被转为数值,模型不理解的列被删除。即使没有出现错误,也无法从回复中判断。解决办法是限定范围:只给代理提供需要更改的那一部分,其余保持在模型之外。

HTML 是该部分的合适形态。表格、样式、字体和图片都能在其中保留,模型能够很好地读取和写入,并且可以映射回原始结构。纯文本会丢失格式;原始的 .xlsx XML 则是模型不该编辑的迷宫。

往返过程

budget.xlsx  (3 worksheets: Summary, Q3, Q4)
   |-- extract_html {"file":{...},"worksheet":2} --> budget_worksheet2.html
   |        agent edits the HTML: Travel 9000 -> 12500,
   |        "Training" -> "Training (external)"
   '-- save_from_html {"htmlFile":{"filePath":"budget_worksheet2.html"},
                       "format":"xlsx",
                       "sourceFile":{"filePath":"budget.xlsx"},
                       "worksheet":2}
         --> budget-q3-revised.xlsx : worksheet 2 replaced, 1 and 3 untouched
evaluation mode: worksheets/slides 1-2 can be edited; the server refuses 3+

服务器返回的内容

从 GroupDocs.Editor.Mcp 26.10.0 对一个合成预算的调用中捕获:

-> extract_html {"file":{"filePath":"budget.xlsx"},"worksheet":2}
<- Extracted worksheet 2 of 3 of 'budget.xlsx' as editable HTML
   Saved to: …/budget_worksheet2.html
   Next: edit the saved .html and call save_from_html to write it back
   as DOCX, XLSX, PPTX, PDF or another format.
   Preview (plain text): ... Cost centre Planned (EUR) Owner Hosting
   57600 IT Support 14400 IT Travel 9000 Sales Training 6000 HR

-> save_from_html {"htmlFile":{"filePath":"budget_worksheet2.html"},
     "format":"xlsx","sourceFile":{"filePath":"budget.xlsx"},
     "worksheet":2,"outputName":"budget-q3-revised.xlsx"}
<- Saved 'budget_worksheet2.html' into a copy of 'budget.xlsx',
   replacing worksheet 2 of 3 (XLSX)
   Saved to: …/budget-q3-revised.xlsx

打开结果即可确认范围:在 Q3 中,Travel 为 12500,行内容为 “Training (external)”;Hosting 和 Support 未改变;Summary 和 Q4 与原来一致。原始 budget.xlsx 并未被修改。

工具通过编号(而非名称)来定位工作表和幻灯片;get_document_info 返回计数,这也是提示中写 “worksheet 2 (Q3)” 的原因。提取响应会附带纯文本预览,便于代理在编辑前确认已获取正确的工作表,同时还有一行 “Next:” 指示后续调用。代理通常会很好地遵循这些提示。对于幻灯片,预览可能以母版占位符文本(如 “Click to edit Master title style”)开头,代理应检查实际的 HTML 内容。

幻灯片以及演示文稿的唯一规则

同样的配对可用于幻灯片:extract_html 加 "slide": 2,编辑后使用 save_from_html 加 "slide": 2 并将原文件作为 sourceFile。在我们的示例中,三页审阅幻灯片的第 2 页被导出为 HTML, “12 percent” 被改为 “14 percent”,随后返回为 review-revised.pptx,第 1 页和第 3 页保持完整。

对于 PowerPoint,sourceFile 不是可选项。单独的 HTML 不包含幻灯片母版,服务器会提示而不是生成损坏的文件:

-> save_from_html {"htmlFile":{"filePath":"review_slide2.html"},
                   "format":"pptx"}
<- Save from HTML failed for 'review_slide2.html' (-> pptx): 'pptx' output
   cannot be created from HTML alone; pass the original document as
   'sourceFile'.

错误信息指出缺少的参数,代理即可自行修正调用。

往返过程优于查找替换的情形

replace_text 适用于单词或名称的快速替换。往返过程适用于其他所有场景:一次性更改多个单元格、同时改写标签和数字、在幻灯片上重构表格,或 replace_text 因格式分段而无法识别的短语。它也是代理在决定更改前先读取局部内容的方式。

先读后写

往返过程的前半段本身就很有价值。代理被问及 “Q3 的旅行计划是多少,谁负责?” 时,可以提取 Q3 工作表的 HTML 并直接回答,而无需进行任何写入;而即将进行编辑的代理应先执行此步骤:读取目标部分,声明将要进行的更改,然后再写入。将此顺序写入项目指令,使其成为默认行为:

To change a worksheet or slide, use the groupdocs-editor MCP server:
extract_html for that one part, edit the HTML, save_from_html with the
original as sourceFile and the same worksheet/slide number. Never rebuild
the whole workbook or deck. Say which cells or text you changed.

最后一句最为关键。 “我已将 Travel 从 9000 改为 12500,并将 Q3 的 Training 重命名为 Training (external)” 这样的回复,审阅者可以在几秒钟内对照文件进行核对。

诚实的限制

  • 评估模式仅允许编辑前两张工作表或幻灯片,服务器会因第三张而拒绝,并给出原因:“Evaluation mode edits only the first 2 visible worksheets of a workbook; worksheet 3 is beyond them.”
  • 未授权的保存会生成草稿:编辑后的工作表顶部会出现横幅行,工作簿会额外添加一个 “Evaluation Warning” 工作表。
  • 未授权运行时提取的 HTML 开头会带有相同的评估行(如上方预览所示),因此代理应编辑单元格,而不是那一行。
  • 工作表和幻灯片的编号从 1 开始,隐藏的也计入。隐藏的幻灯片需要 showHidden: true;隐藏的工作表无论 showHidden 为何都会被拒绝,需先在工作簿中取消隐藏。

常见问题

编辑一个工作表会影响其他工作表吗?
不会。编辑后的 HTML 只会替换你指定的工作表,且是在原文件的副本中完成,其余内容直接从源文件复制。

可以用于 PowerPoint 幻灯片吗?
可以,只需使用 "slide" 而不是 "worksheet",并将原文件作为 sourceFile(PowerPoint 输出必须如此)。

结果文件保存在哪里?
保存到存储文件夹中的新文件,例如这里的 budget-q3-revised.xlsx(因为我们传入了 outputName),原始文件保持不变。

深入了解