A Word 表单包含文本框、部门下拉列表和行为准则复选框,另有一份包含三十名新员工的电子表格:这要么是一次复制粘贴的早晨,要么只需一个提示。使用本地运行的 GroupDocs.Editor MCP 服务器,Claude、Cursor 或 Copilot 首先询问表单有哪些字段,然后为每一行生成一份副本并以人员姓名保存。表单的布局保持不变,任何没有匹配字段的值都会被报告,而不是悄悄丢弃:

读取 new-employee-form.docx,然后为 new-hires.csv 的每一行填充一份副本,并以员工姓名命名每个文件。

逐步说明请参见文档:如何使用 AI 代理从数据填充 Word 表单字段。

谁在读取电子表格?

代理在读取,而且这点必须说得很清楚。Editor 服务器只处理 Word 表单;它不读取你的 CSV 或工作簿。代理使用自己的文件工具读取行,或由你粘贴进来,然后对每一行调用一次 fill_form_fields,并为每个人提供一个 outputName。这种划分是一项特性:数据永远不需要符合服务器能理解的格式,代理可以在写入表单之前对其进行清理(拆分全名、规范化日期)。

先询问表单

Word 表单中的字段名往往与页面上的标签不同。标签可能写着 “Full name:”,而字段名可能是 FullName、Text1 或 Name_Employee。盲目猜测会导致表单填充不完整。get_form_fields 会返回真实的名称、类型和当前值。以下是针对一个合成入职表单(输出已截短)在 GroupDocs.Editor.Mcp 26.10.0 下的捕获结果:

-> get_form_fields {"file":{"filePath":"new-employee-form.docx"}}
<- { "count": 6, "fields": [
     { "name": "FullName",   "type": "Text",     "value": "" },
     { "name": "Email",      "type": "Text",     "value": "" },
     { "name": "StartDate",  "type": "Text",     "value": "" },
     { "name": "Department", "type": "DropDown",
       "value": { "options": [ "Engineering", "Finance", "Sales",
                               "Operations" ], "selected": "Engineering" } },
     { "name": "Agree",      "type": "CheckBox", "value": false },
     { "name": "Newsletter", "type": "CheckBox", "value": false } ] }

下拉列表会返回其所有选项,因而代理可以将电子表格中的 “finance” 映射为准确的条目 “Finance”,而不是自行创造第六个部门。

然后填充单行

-> fill_form_fields {"file":{"filePath":"new-employee-form.docx"},
     "values":{"FullName":"Amara Okafor",
               "Email":"amara.okafor@northwind.example",
               "StartDate":"2026-12-01","Department":"Finance",
               "Agree":"true","Phone":"+31 10 555 0100"}}
<- Updated 5 field(s) in 'new-employee-form.docx': FullName, Email,
   StartDate, Department, Agree.
   Not found: Phone. Call get_form_fields for the exact names.
   Saved to: …/new-employee-form_edited.docx

电子表格中有一个电话列,而表单没有对应字段。服务器填充了五个已有字段,并在响应中标记了未找到的字段。使用 get_form_fields 再次读取已填充的副本,可看到 "selected": "Finance" 与 "Agree": true 已正确写入,而 Newsletter 仍保持未选中,因为该行没有提供相应信息。

整个批处理

new-hires.csv (agent reads it)          new-employee-form.docx
  Amara Okafor, Finance, ...  ---+
  Tomas Varga, Sales, ...     ---+      get_form_fields (once)
  ...                            |        -> FullName, Email, StartDate,
                                 |           Department, Agree, ...
                                 v
  fill_form_fields {"values":{...row...},
                    "outputName":"form-amara-okafor.docx"}   x one per row
     -> "Updated 5 field(s) ... Not found: Phone"
     -> form-amara-okafor.docx, form-tomas-varga.docx, ...

三条指令让批处理可靠:在首次填充前调用一次 get_form_fields 并映射列到字段名;为每一行提供独立的 outputName,否则所有副本会堆叠为 new-employee-form_edited.docx、new-employee-form_edited (1).docx 等,文件名中不含人员信息;最后将所有 “Not found” 行收集成一份报告,而不是在首次出现时就中止。

首行即可成功的提示

大多数批处理失败都发生在第一行,然后重复三十次。先进行一次干运行:

读取 new-employee-form.docx 的字段以及 new-hires.csv 的标题行。展示每一列对应哪个字段,哪些列没有对应字段。随后仅填充第一行并停止。

代理会返回一个小映射表,例如 Name -> FullName、Dept -> Department、Phone -> (no field),并提供一个已填充的表单供你打开。如果部门拼写或日期格式错误,你只会看到一次,修正指令后再让它处理其余行。此审查步骤只需一分钟,却能把三十个正确的表单与三十个需要人工检查的表单区分开来。

它还能解决电子表格本身无法自行决定的问题。例如,空的 “Agree” 单元格是应视为未选中,还是应跳过该行?“2026-12-01” 应直接写入日期字段,还是写成 “1 December 2026”?代理会遵循你的指示,但必须先被告知。

表单工具还能处理哪些内容

文本、数字和日期字段使用字符串填充;复选框接受 "true" 或 "false";下拉列表接受其选项之一。format 可将已填充的副本保存为 DOC、RTF 或 ODT,而不是 DOCX;已填充的表单始终是 Word 文档,若需 PDF 供新员工使用,则需在后续进行单独转换。受密码保护的表单可通过 password 打开并保持受保护状态。填充过程由表单字段引擎完成,而非通过 HTML,因此页眉、页脚和页码会保持原样。工具支持读取 DOCX、DOC、DOCM、DOT、DOTX、RTF 和 ODT 表单。

诚实的限制

  • 仅支持 Word 表单以及 Legacy 表单字段:即 Word 中 Developer → Legacy Tools 插入的文本、复选框和下拉列表字段。内容控件不在列出或填充范围。PDF 表单(AcroForms)不在此服务器的支持范围内。
  • 服务器不读取电子表格;代理提供数值,因此请在第一行确认列映射后再让其处理全部行。
  • 每次调用只能填充一个表单。三十份表单需要三十次调用。
  • 评估模式会在每个已填充副本的顶部添加横幅行,未授权的输出仅为草稿,不能直接发送给新员工。

FAQ

代理如何知道字段名称?
它会调用 get_form_fields,该接口返回每个字段的名称、类型、当前值以及每个下拉列表的选项。

表单没有对应字段的值会怎样处理?
该值会被跳过,并在响应中标记(如 “Not found: Phone”),以便代理报告。

我的原始表单会被修改吗?
不会。每次填充都会生成一个新文件,模板保持为空,供下一行使用。

深入了解