在Word文档中添加下拉列表控件 C#/VB.NET

下拉列表是内容控件的一种,是我们比较常用的一个功能。它能够限定编辑的内容,只能选择列表里的数据录入,方便填写的同时,保证了录入数据的准确性。在微软Word中,添加控件的功能默认是关闭的,需要打开开发工具才能添加控件。但在Word文档中添加内容控件并非只能通过微软Word实现,还可通过编程实现。通过代码添加内容控件无需微软Word,同时能够集成到自己的项目、程序中,对于开发者来说非常方便。本文将介绍用代码实现在Word文档中添加下拉列表控件的操作方法。
本文所用到的方法需要一个免费的Word库的,Free Spire.Doc for .NET,需先引入DLL文件才可在代码中引用。

1. 通过Nuget引入

1.1 在Nuget管理界面中搜索FreSpire.Doc安装。
1.2 在控制台输入以下代码安装。
PM> Install-Package FreeSpire.Doc

小标题

2. 手动下载添加DLL

访问Free Spire.Doc for .NET官网,下载并解压文件,然后在项目依赖项中添加DLL文件。

在Word文档中添加下拉列表

添加下拉列表的详细操作步骤如下:

  • 创建 Document 类的对象。
  • Document.LoadFromFile() 方法从磁盘载入Word文档。
  • 在文档中添加一个段落。
  • 创建内容控件。
  • Paragraph.ChildObjects.Add() 方法将内容控件插入到创建的段落中。
  • StructuredDocumentTagInline.SDTProperties.SDTType 属性将内容控件设置为下拉列表控件(DropDownList)。
  • 用 StructuredDocumentTagInline.SDTProperties.ControlProperties 属性添加下拉列表选项。
  • 用 StructuredDocumentTagInline.SDTContent.ChildObjects.Add() 方法设置下拉列表显示的选项。
  • 用 Document.SaveToFIle() 方法保存文档。

代码示例:

using System;
using System.Drawing;
using Spire.Doc;
using Spire.Doc.Fields;
using Spire.Doc.Documents;

namespace AddContentControl
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //创建Word文档
            Document document = new Document();

            //从磁盘加载Word文档
            document.LoadFromFile(@"C:\Users\Allen\Desktop\Sample3.docx");

            //在文档中添加一个段落
            Section section = document.Sections[0];
            Paragraph paragraph = section.AddParagraph();
            TextRange text = paragraph.AppendText("下拉列表控件: ");
            text.CharacterFormat.FontSize = 14;
            text.CharacterFormat.FontName = "微软雅黑"; 

            //创建内容控件
            StructureDocumentTagInline sd = new StructureDocumentTagInline(document);
            
            //将内容控件插入到创建的段落
            paragraph.ChildObjects.Add(sd);

            //将内容控件的类型设置为下拉列表控件
            sd.SDTProperties.SDTType = SdtType.DropDownList;

            //添加下拉列表选项
            SdtDropDownList sddl = new SdtDropDownList();
            sddl.ListItems.Add(new SdtListItem("选项1"));
            sddl.ListItems.Add(new SdtListItem("选项2"));
            sddl.ListItems.Add(new SdtListItem("选项3"));
            sd.SDTProperties.ControlProperties = sddl;

            //设置下拉列表显示的选项
            TextRange rt = new TextRange(document);
            rt.Text = sddl.ListItems[0].DisplayText;
            sd.SDTContent.ChildObjects.Add(rt);

            //保存文档
            document.SaveToFile("Output.docx", FileFormat.Docx);
        }
    }
}

添加效果示意:
在Word文档中添加下拉列表

以上所使用的代码引用项均来自免费的Free Spire.Doc for .NET。

1 声望
0 粉丝
0 条评论
推荐阅读
Java 合并PDF文件
对于内容联系比较紧密,但是却被分成多个文件的PDF文档,我们可以将其合并为一个PDF文档,方便我们阅读内容以及处理文档。本文将介绍一种用Java编程实现合并PDF文档的方法。

大丸阅读 996

Just for fun——C#应用和Nodejs通讯
进程通信常见的进程通讯的方法有:管道(Pipe)命名管道信号消息队列其他管道是比较简单基础的技术了,所以看看它。Node IPC支持Node官方文档中Net模块写着:IPC SupportThe net module supports IPC with named ...

pigLoveRabbit2阅读 6.5k评论 2

必看!.NET 7 在网络领域的四大更新
最新的 .NET 7 现已发布,我们想介绍一下其在网络领域所做的一些有趣的更改和添加。这篇文章我们将讨论 .NET 7 在 HTTP 空间、新 QUIC API、网络安全和 WebSockets 方面的变化。

微软技术栈1阅读 571

封面图
给 .NET 程序加个「设置开机启动」
前几天写了个「干掉微信只读」的程序,用来解决微信更新 3.9 以后收到文件会自动设置为只读的问题。微信这个设计可以有效地保证收到的原始文件安全性,避免被无意改动。但确实有违某些用户的习惯性操作。「干掉微...

边城1阅读 389

封面图
关于《小公司需要使用微服务架构吗?》的读后感
最近阅读了一篇文章《小公司需要使用微服务架构吗?》,这篇文章讨论了微服务架构的优缺点,以及微服务架构是否适合小公司。为了蹭一下热度,本文将结合两年半的练习经验,谈谈我对这篇文章的读后感。

newbe365242阅读 254

封面图
比特熊故事汇2.0 | 矛盾个性是促成创意不竭的正反合
2023年开年故事汇,我们请来一位“熟悉的新朋友”,他乐观、谨慎、敢于尝试、富有想象力,擅长Azure、AI、C#、产品设计。他是拥有10年+经验的微软MVP,也是有点社恐却谈笑风生的开发人。本期比特熊故事汇主人公——王...

微软技术栈阅读 918

封面图
使用 .NET 7、Blazor 和 .NET MAUI 构建你自己的 Podcast App
.NET Podcast App 首次在 .NET Conf 2021上推出,最近进行了更新以在 .NET Conf 2022 keynote 中突出显示 .NET 7 中的新功能。该 Podcast App 已准备好使用展示 .NET,ASP.NET Core,Blazor,.NET MAUI,Azure Co...

微软技术栈阅读 857

封面图
1 声望
0 粉丝
宣传栏