在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; } } } } }
內容控件讀取效果:
(本文完)