在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;
}
}
}
}
}
測試文檔:
讀取效果:
(本文完)
轉載請註明出處!