C# 读取Word内容控件

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。C# 读取Word内容控件,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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

名称

下拉列表内容控件

下拉列表包含了一个预先定义好的列表。和组合框不同的是下拉列表不允许用户编辑项。

纯文本内容控件

纯文本内容控件只能包含文本,不能包含其他项,例如表格、图片或其他内容控件。

富文本内容控件

与纯文本内容控件不同,富文本内容控件可以包含除文本以外的其他项,例如表格、图片或其他内容控件。

日期选取器内容控件

日期选取器内容控件包含一个日历控件,用于帮助用户输入日期。

组合框内容控件

组合框控件包含一个可以直接编辑的列表。它结合了文本框和下拉列表的属性,用户可以在框中键入值或者从下拉列表中选择值。

图片内容控件

图片内容控件用于显示图片。用户可以在制作模板时指定图片,也可以通过单击此控件来选择需要插入的图片。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

本篇文章将介绍通过C#程序获取Word中已有的内容控件的方法。在Word中添加内容控件,请参考这篇文章

使用工具:Spire.Doc for .NET

dll文件获取及导入:

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

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

 

C# 示例代码(供参考):

测试文档如下:

C# 读取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;
                }
            }
        }
    }
}

内容控件读取效果:

C# 读取Word内容控件 

 

(本文完)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/209403.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!