在Word中,藉助內容控件,可設計出具備特定功能的文檔或模板。如下表格中簡單介紹了幾種經常使用的內容控件:html
名稱工具 |
簡介測試 |
下拉列表內容控件網站 |
下拉列表包含了一個預先定義好的列表。和組合框不一樣的是下拉列表不容許用戶編輯項。spa |
純文本內容控件設計 |
純文本內容控件只能包含文本,不能包含其餘項,例如表格、圖片或其餘內容控件。3d |
富文本內容控件code |
與純文本內容控件不一樣,富文本內容控件能夠包含除文本之外的其餘項,例如表格、圖片或其餘內容控件。htm |
日期選取器內容控件blog |
日期選取器內容控件包含一個日曆控件,用於幫助用戶輸入日期。 |
組合框內容控件 |
組合框控件包含一個能夠直接編輯的列表。它結合了文本框和下拉列表的屬性,用戶能夠在框中鍵入值或者從下拉列表中選擇值。 |
圖片內容控件 |
圖片內容控件用於顯示圖片。用戶能夠在製做模板時指定圖片,也能夠經過單擊此控件來選擇須要插入的圖片。 |
本篇文章將介紹經過C#程序獲取Word中已有的內容控件的方法。在Word中添加內容控件,請參考這篇文章。
使用工具:Spire.Doc for .NET
dll文件獲取及導入:
方法1:經過官網下載dll文件包。下載後,解壓安裝。完成安裝後,注意在vs程序中添加引用Spire.Doc.dll程序集文件。以下圖:
方法2:可經過Nuget網站下載。
測試文檔以下:
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; } } } } }
內容控件讀取效果:
(本文完)