ⅴs2010控件名称及用方法_C# 添加、获取Word内容控件

在Word中,借助内容控件,可设计出具有特定功能的文档或模板。以下表格中简单介绍了几种常用的内容控件。

42cd2ad648467ce0dffa0add4c7646e1.png

本篇文章中介绍通过C# 来添加以上几种内容控件的添加方法。同时,针对Word文档中已有的控件,也可以读取控件名称及控件中的内容。

使用工具:Spire.Doc for .NET pack

Dll文件获取及导入:

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

f98bd1cfca0318c08eefc36d2c8ff7e0.png

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

C# 代码示例

【示例1】添加内容控件到Word

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");
        }
    }
}

控件添加效果:

2ec369e4e413f4afb867fc75f57bb10a.png

【示例2】获取Word中的内容控件

using Spire.Doc;
using Spire.Doc.Documents;
using System;
using System.Collections.Generic;
using System.Text;

namespace GetSDT
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载含有内容控件的文档
            Document document = new Document();
            document.LoadFromFile("test.docx");

            //调用StructureTags类获取内容控件列表
            StructureTags structureTags = GetAllTags(document);
            List<StructureDocumentTagInline> tagInlines = structureTags.tagInlines;

            //获取内容控件属性并输出到控制台
            for (int i = 0; i < tagInlines.Count; i++)
            {
                string alias = tagInlines[i].SDTProperties.Alias;
                string tag = tagInlines[i].SDTProperties.Tag;
                string value = tagInlines[i].SDTContent.Text;
                Console.WriteLine(alias);
                Console.WriteLine(tag);
                Console.WriteLine(value);
                Console.WriteLine("_____________________");
 
            }
            Console.ReadLine();            
        }
        static StructureTags GetAllTags(Document document)
        {
            //遍历文档并获取所有的内容控件
            StructureTags structureTags = new StructureTags();
            foreach (Section section in document.Sections)
            {
                foreach (DocumentObject obj in section.Body.ChildObjects)
                {
                    if (obj.DocumentObjectType == DocumentObjectType.Paragraph)
                    {
                        foreach (DocumentObject pobj in (obj as Paragraph).ChildObjects)
                        {
                            if (pobj.DocumentObjectType == DocumentObjectType.StructureDocumentTagInline)
                            {
                                structureTags.tagInlines.Add(pobj as StructureDocumentTagInline);
                            }
                        }
                    }
                }
            }
            return structureTags;
        }
        public class StructureTags
        {
            List<StructureDocumentTagInline> m_tagInlines;
            public List<StructureDocumentTagInline> tagInlines
            {
                get
                {
                    if (m_tagInlines == null)
                        m_tagInlines = new List<StructureDocumentTagInline>();
                    return m_tagInlines;
                }
                set
                {
                    m_tagInlines = value;
                }
            }
        }
    }
}

测试文档:

7ee809d4d1eec23be002c9c77ef7804b.png

读取效果:

217dcd1ee623895780ae22debddace0e.png

(完)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值