zoukankan      html  css  js  c++  java
  • C# 读取Word内容控件

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

    名称

    下拉列表内容控件

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

    纯文本内容控件

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

    富文本内容控件

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

    日期选取器内容控件

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

    组合框内容控件

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

    图片内容控件

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

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

    使用工具:Spire.Doc for .NET

    dll文件获取及导入:

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

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

     

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

    测试文档如下:

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

    内容控件读取效果:

     

    (本文完)

  • 相关阅读:
    {转}:Qualcomm整合SRS音频技术于其最新参考设计架构SRS
    语音库
    {转}:Digium和Dialogic在最近发布的产品中强调高清语音
    ICASSP2010Nokia研究中心对各种语音编码器进行主观测评的结果:
    MPEG 工作组会议进程
    加拿大在音频压缩算法和处理技术上有相当的研究和应用
    POLAQ :FAQ(注意,是ITU标准,但并不开源)
    语音编解码技术公司介绍(一):Digital Voice Systems, Inc. (DVSI)
    RALCWI(Robust Advanced Low Complexity Waveform Interpolation):
    G.723.1编解码器工程
  • 原文地址:https://www.cnblogs.com/Yesi/p/11428831.html
Copyright © 2011-2022 走看看