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

內容控件讀取效果:

 

 

(本文完)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM