C# 在Word中添加内容控件

2025-11-24 11:13:55

1、方法1:通过eiceblue官网下载文件包。下载后,解压安装。完成安装后,注意在程序中添加引用Spire.Doc.dll程序集文件。如下图:

C# 在Word中添加内容控件

2、方法2:可通过Nuget网站下载。

1、using Spire.Doc;

using Spire.Doc.Documents;

using Spire.Doc.Fields;

using System;

using System.Drawing;

namespace Addsdt

{

    class Program

    {

        static void Main(string[] args)

        {

            //创建word文档 

            Document document = new Document();

            Section section = document.AddSection();

            Paragraph paragraph = section.AddParagraph();

            //实例化StructureDocumentTagInline类的对象

            StructureDocumentTagInline sdt = new StructureDocumentTagInline(document);


            //添加下拉列表内容控件

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.SDTType = SdtType.DropDownList;

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "下拉列表";

            sdt.SDTProperties.Tag = "下拉列表";

            //添加下拉选项

            SdtDropDownList sddl = new SdtDropDownList();

            sddl.ListItems.Add(new SdtListItem("男", "1"));

            sddl.ListItems.Add(new SdtListItem("女", "2"));

            sdt.SDTProperties.ControlProperties = sddl;

            //设置控件显示的初始选项

            TextRange rt = new TextRange(document);

            rt.Text = sddl.ListItems[0].DisplayText;

            Spire.Doc.Formatting.CharacterFormat format = new Spire.Doc.Formatting.CharacterFormat(document);

            format.FontName = "宋体";

            rt.ApplyCharacterFormat(format);

            sdt.SDTContent.ChildObjects.Add(rt);


            //添加纯文本内容控件 

            paragraph = section.AddParagraph();

            sdt = new StructureDocumentTagInline(document);

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.SDTType = SdtType.Text;

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "纯文本";

            sdt.SDTProperties.Tag = "纯文本";

            //设置显示文本

            SdtText text = new SdtText(false);

            text.IsMultiline = true;

            sdt.SDTProperties.ControlProperties = text;

            rt = new TextRange(document);

            rt.Text = "此处只能输入纯文本";

            rt.ApplyCharacterFormat(format);

            sdt.SDTContent.ChildObjects.Add(rt);


            //添加富文本内容控件 

            paragraph = section.AddParagraph();

            sdt = new StructureDocumentTagInline(document);

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.SDTType = SdtType.RichText;

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "富文本";

            sdt.SDTProperties.Tag = "富文本";

            //设置显示文本

            SdtText richText = new SdtText(true);

            richText.IsMultiline = true;

            sdt.SDTProperties.ControlProperties = richText;

            rt = new TextRange(document);

            rt.Text = "可输入格式化的文本、表格、图片等";

            rt.ApplyCharacterFormat(format);

            sdt.SDTContent.ChildObjects.Add(rt);


            //添加日期选取器内容控件 

            paragraph = section.AddParagraph();

            sdt = new StructureDocumentTagInline(document);

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.SDTType = SdtType.DatePicker;

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "日期选取器";

            sdt.SDTProperties.Tag = "日期选取器";

            //设置日历模式

            SdtDate date = new SdtDate();

            date.CalendarType = CalendarType.Default;

            date.DateFormat = "yyyy.MM.dd";

            date.FullDate = DateTime.Now;

            sdt.SDTProperties.ControlProperties = date;

            //设置显示日期

            rt = new TextRange(document);

            rt.Text = "2019.08.22";

            rt.ApplyCharacterFormat(format);

            sdt.SDTContent.ChildObjects.Add(rt);


            //添加组合框内容控件 

            paragraph = section.AddParagraph();

            sdt = new StructureDocumentTagInline(document);

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.SDTType = SdtType.ComboBox;

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "组合框";

            sdt.SDTProperties.Tag = "组合框";

            //添加选项

            SdtComboBox cb = new SdtComboBox();

            cb.ListItems.Add(new SdtListItem("中国", "1"));

            cb.ListItems.Add(new SdtListItem("日本", "2"));

            cb.ListItems.Add(new SdtListItem("意大利", "3"));

            sdt.SDTProperties.ControlProperties = cb;

            //添加显示文本

            rt = new TextRange(document);

            rt.Text = cb.ListItems[0].DisplayText;

            rt.ApplyCharacterFormat(format);

            sdt.SDTContent.ChildObjects.Add(rt);


            //添加复选框内容控件 

            paragraph = section.AddParagraph();

            sdt = new StructureDocumentTagInline(document);

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.SDTType = SdtType.CheckBox;

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "复选框";

            sdt.SDTProperties.Tag = "复选框";

            SdtCheckBox scb = new SdtCheckBox();

            sdt.SDTProperties.ControlProperties = scb;

            rt = new TextRange(document);

            rt.ApplyCharacterFormat(format);

            sdt.ChildObjects.Add(rt);

            scb.Checked = false;

            //添加图片内容控件 

            paragraph = section.AddParagraph();

            sdt = new StructureDocumentTagInline(document);

            paragraph.ChildObjects.Add(sdt);

            sdt.SDTProperties.ControlProperties = new SdtPicture();

            //为控件设置标题和标签

            sdt.SDTProperties.Alias = "图片";

            sdt.SDTProperties.Tag = "图片";

            //添加图片

            DocPicture pic = new DocPicture(document);

            pic.WidthScale = 30f;

            pic.HeightScale = 30f;

            pic.LoadImage(Image.FromFile("nz.png"));

            sdt.SDTContent.ChildObjects.Add(pic);

            //保存文档          

            document.SaveToFile("Controls.docx", FileFormat.Docx);

            System.Diagnostics.Process.Start("Controls.docx");

        }

    }

}

2、内容控件添加效果:

C# 在Word中添加内容控件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢