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