如何在 Word 中创建下拉列表 (内容控件 + 窗体域)

下拉列表是 Microsoft Word 中构建交互式表单的核心功能之一。通过将用户输入限定为预设选项,它能有效统一填写格式、规避录入错误、提升填写效率,是制作标准化问卷、业务申请表、信息采集文档的必备技能。

与常用于数据处理的 Excel 下拉列表不同,Word 的下拉功能专为文档排版与表单场景设计。本文将系统讲解三种可靠的Word 下拉列表创建方法,从手动操作到代码批量生成,覆盖不同使用需求。

Word 下拉列表的核心作用

下拉列表是一种菜单式交互控件,用户点击后会展开预设选项清单,选中即可完成字段填充,无需手动输入。

它的核心价值体现在:

  • 规范数据格式:统一表单、问卷的填写口径,避免表述混乱
  • 降低录入错误:限定可选范围,从源头减少错填、漏填
  • 提升填写效率:一键选择替代打字,缩短表单完成时间
  • 便于后续处理:输出标准化数据,方便汇总、统计与自动化对接

方法一:使用内容控件创建下拉列表

该方案适用于 Word 2007 至 Microsoft 365 全系列版本,是微软官方主推的现代化交互方式。Word 内容控件自定义程度高、样式灵活,且无需锁定整篇文档即可使用。

步骤 1:启用“开发工具”选项卡

下拉控件默认隐藏在“开发工具”选项卡中,需手动调出:

  • 点击顶部菜单栏 “文件 > 选项
  • 在弹出的 “Word 选项” 窗口中,选择 “自定义功能区
  • 在右侧列表中,勾选 “开发工具” 复选框
  • 点击 “确定”,顶部功能区将显示 “开发工具” 选项卡

在 Word 选项对话框中启用开发工具选项卡

步骤 2:插入下拉列表内容控件

  • 将光标放置在需要插入下拉列表的位置
  • 切换到 “开发工具” 选项卡,找到 “控件” 功能组
  • 点击 “下拉列表内容控件” 图标(样式为带下拉箭头的列表图形)
  • 光标位置将出现一个默认的下拉输入框

开发工具选项卡中的下拉列表内容控件图标

步骤 3:添加并自定义下拉选项

  • 选中刚创建的控件,点击功能区的 “控件属性” 按钮
  • 在 “内容控件属性” 对话框中,配置基础设置:
    • 标题:设置控件上方的显示标签,提示用户填写内容
    • 标记:填写内部识别符,用于文档自动化、VBA 开发场景
    • 颜色:自定义控件的外观配色
    • 勾选 “无法删除内容控件”,可防止填写者误删控件
  • 在 “下拉列表属性” 区域,点击 “添加” 按钮
  • 在 “添加选项” 窗口的 “显示名称” 栏中输入选项文字(即用户在列表中看到的内容)
  • ” 栏会自动填充相同文字,可根据需要修改
  • 重复上述操作,添加所有需要的下拉选项
  • 使用 “修改”、“删除”、“上移”、“下移” 按钮调整列表内容与顺序
  • 点击 “确定” 保存设置

用于配置下拉选项的内容控件属性对话框

步骤 4:测试 Word 下拉菜单

点击控件右侧的小箭头展开列表,选择任意选项。默认占位文本(「选择一项。」)将替换为你选中的内容。

Word 中已添加完成、包含 5 个选项的下拉菜单效果

实用技巧: Microsoft Word 原生下拉列表仅支持单选。如需实现多选功能,可以使用 Word 复选框内容控件

方法二:使用旧式窗体域实现兼容

如果文档需要兼容 Word 2003 及更早版本,或需要保存为旧版 .doc 格式,可以使用旧式下拉窗体域。该方案必须开启文档保护才能正常交互,同时支持退出宏、字段计算等高级表单功能。

步骤 1:插入旧式下拉窗体域

  • 在 “开发工具” 选项卡中,点击 “旧式工具” 按钮(工具箱样式图标)
  • 在 “旧式窗体” 分类下,点击 “组合框(窗体控件)” 图标
  • 光标位置将出现一个灰色的窗体输入框

旧式工具中的下拉型窗体域按钮

步骤 2:配置下拉选项

  • 双击灰色窗体域,打开 “下拉型窗体域选项” 设置窗口
  • 在 “下拉项” 输入框中键入第一个选项
  • 点击 “添加 >>”,将选项移入右侧选项列表
  • 重复操作,依次添加所有下拉选项
  • 通过列表旁的箭头按钮调整选项排序,点击 “删除” 可移除不需要的选项
  • 可选配置:设置书签名、绑定退出宏、添加帮助提示文字
  • 点击 “确定” 保存选项配置

带添加按钮与选项列表的下拉型窗体域选项对话框

步骤 3:启用文档保护(必操作,否则无法使用)

与现代化内容控件不同,旧式窗体域必须开启文档保护,下拉功能才能生效。

  • 点击 “开发工具” 选项卡中的 “限制编辑
  • 在右侧弹出的 “限制编辑” 面板中:
    • 勾选 “仅允许在文档中进行此类型的编辑
    • 在下拉列表中选择 “填写窗体
  • 点击 “是,启动强制保护
  • 可设置保护密码(可选),点击 “确定” 生效
  • 此时用户仅能操作窗体字段,无法编辑文档其他内容

将编辑限制为「填写窗体」以启用旧式下拉功能

方法三:通过 C# 代码生成下拉列表

对于需要批量生成文档、批量修改表单字段的开发场景,可通过 Free Spire.Doc for .NET 实现程序化创建。该方案无需依赖本地安装 Microsoft Office,适合服务端、自动化工作流场景。

步骤 1:安装 Free Spire.Doc

通过 NuGet 将库快速添加到 .NET 项目中:

  • 可视化界面安装:在 NuGet 包管理器中搜索 FreeSpire.Doc 并安装
  • 命令行安装:在程序包管理器控制台执行命令:
1
PM> Install-Package FreeSpire.Doc

步骤 2:编写 C# 代码创建 Word 下拉列表

以下代码将新建一个 Word 文档,添加带标签的下拉列表内容控件(包含自定义显示名称与对应值),并保存输出文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using Spire.Doc;
using Spire.Doc.Fields;
using Spire.Doc.Documents;
namespace CreateDropDownList
{
class Program
{
static void Main(string[] args)
{
// 新建 Word 文档
Document document = new Document();
Section section = document.AddSection();
Paragraph paragraph = section.AddParagraph();

// 在下拉框前添加标签文本
TextRange label = paragraph.AppendText("所属部门:");
label.CharacterFormat.Bold = true;

// 创建行内结构化文档标签(下拉内容控件)
StructureDocumentTagInline sdt = new StructureDocumentTagInline(document);
sdt.SDTProperties.SDTType = SdtType.DropDownList;
sdt.SDTProperties.Alias = "所属部门";
sdt.SDTProperties.Tag = "dept_selection";
paragraph.ChildObjects.Add(sdt);

// 定义下拉列表选项
SdtDropDownList dropDownList = new SdtDropDownList();
dropDownList.ListItems.Add(new SdtListItem("市场部", "MKT"));
dropDownList.ListItems.Add(new SdtListItem("销售部", "SLS"));
dropDownList.ListItems.Add(new SdtListItem("人力资源部", "HR"));
dropDownList.ListItems.Add(new SdtListItem("研发部", "ENG"));
dropDownList.ListItems.Add(new SdtListItem("财务部", "FIN"));

// 将选项绑定到内容控件
sdt.SDTProperties.ControlProperties = dropDownList;

// 设置默认显示文本(第一项)
TextRange defaultText = new TextRange(document);
defaultText.Text = dropDownList.ListItems[0].DisplayText;
sdt.SDTContent.ChildObjects.Add(defaultText);

// 保存文档
document.SaveToFile("下拉列表.docx", FileFormat.Docx2016);
document.Close();
}
}
}

核心 API 说明

组件 功能说明
StructureDocumentTagInline 在段落内创建内容控件(SDT)
SdtType.DropDownList 指定控件类型为下拉列表
SdtDropDownList 存储下拉列表的全部选项集合
SdtListItem 表示列表中的单个选项(显示文本 + 对应值)
SDTContent.ChildObjects.Add() 设置控件默认显示的文本内容

生成效果:
通过 C# 与 Free Spire.Doc 生成的 Word 下拉列表

SdtType 枚举支持多种控件类型。除下拉列表外,还可以在 Word 中插入组合框、复选框、日期选择器等控件

拓展:C# 创建旧式下拉窗体域

如果需要兼容旧版 Word 格式,也可以创建旧式下拉窗体域:

1
2
3
4
5
6
7
8
9
DropDownFormField legacyDropDown = paragraph.AppendField("StatusField", FieldType.FieldFormDropDown) as DropDownFormField;
legacyDropDown.DropDownItems.Add("市场部");
legacyDropDown.DropDownItems.Add("销售部");
legacyDropDown.DropDownItems.Add("人力资源部");
legacyDropDown.DropDownItems.Add("研发部");
legacyDropDown.DropDownItems.Add("财务部");

// 启用窗体保护(旧式控件正常运行的必要条件)
document.Protect(ProtectionType.AllowOnlyFormFields, "");

注意:与手动操作的旧式方法一致,旧式窗体域必须开启文档保护,下拉功能才能正常使用。

通过 C# 与 Free Spire.Doc 生成的旧式下拉表单域

常见问题(FAQ)

Q:如何删除文档中的下拉列表?

选中控件后按 “Delete” 键即可。如果控件处于锁定状态,先打开 “属性”,取消勾选 “无法删除内容控件” 后再删除。

Q:下拉列表点击没反应、无法选择怎么办?

分两种场景排查:

  • 旧式窗体域:大概率是未开启文档保护。进入 “开发工具” > “限制编辑”,启用窗体填写保护即可。
  • 内容控件:控件可能被锁定编辑,或文档处于兼容模式(兼容模式会禁用现代化控件)。
  • 若下拉箭头不显示,检查是否处于 “设计模式”,退出设计模式即可恢复。

Q:下拉列表和组合框有什么区别?

下拉列表仅允许用户从预设选项中选择;组合框既支持从列表选择,也允许用户手动输入自定义内容。

Q:下拉列表最多能添加多少个选项?

Word 本身没有硬性数量限制,但从用户体验出发,建议选项数量控制在 20~30 项以内。选项过多会增加查找成本,若需要大量选项,推荐使用支持输入检索的组合框,或将选项拆分为多个级联字段。

总结与选型建议

掌握 Word 下拉列表的制作方法,能将静态文档升级为高效的交互式表单,显著提升数据规范性,降低后续整理成本。

三种方案的选型建议:

  • 日常办公、常规表单:优先选择 “内容控件” 方案,样式美观、配置灵活,适配绝大多数现代 Word 版本
  • 需要兼容 Word 2003/.doc 旧格式:选用 “旧式窗体域” 方案,注意必须开启文档保护
  • 批量生成、自动化文档工作流:采用 C# 代码方案,无需依赖 Office,可实现服务端批量处理

按照上述步骤操作,即可快速制作出稳定、规范的 Word 下拉列表,满足团队内各类表单场景需求。

相关阅读