半岛权威十大直营(官方)网站

Word控件Spire.Doc 【文本】教程(7) ;C#获取Word文档中内容控件的别名、标签和ID

翻译|使用教程|编辑:胡涛|2022-07-27 10:10:32.143|阅读 116 次

概述:本文主要介绍如何在C#获取Word文档中内容控件的别名、标签和ID,欢迎查阅!

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

相关链接:

内容控件为您提供了一种设计文档的方法。当您向文档添加内容控件时,该控件由边框、标题和可以向用户提供说明的临时文本标识。根据微软的说法,内容控件主要受益于两个功能:

  • 防止用户编辑或删除文档的受保护部分。
  • 将文档或模板的部分内容绑定到数据。您可以将内容控件绑定到数据库字段、.NET Framework 中的托管对象、存储在文档中的 XML 元素以及其他数据源。

Spire.Doc for.NET 最新下载

因此,开发者在运行时处理内容控件时,需要获取内容控件的属性。本文说明如何通过 Spire.Doc 获取所有控件及其属性,包括别名、id 和标记。

首先,检查包含六个按行和表格分布的内容控件的测试文件。默认情况下,如果我们不点击受保护的部分,控件的边框和标题不会出现。

测试文件:

C#获取Word文档中内容控件的别名、标签和ID

主要步骤

第 1 步:创建一个新的 Word 文档并加载测试文件。

第 2 步:创建两个列表来存储标签,这些标签分别以行和表的形式分布。在这里,每个内容控件都将由标签标识。

第 3 步:使用foreach语句获取Word文档中的所有标签。

完整代码

static void Main(string[] args)
{
using (Document document = new Document(@"..\..\TestData\test.docx"))
{
StructureTags structureTags = GetAllTags(document);
List<StructureDocumentTagInline> tagInlines = structureTags.tagInlines;

string alias = tagInlines[0].SDTProperties.Alias;
decimal id = tagInlines[0].SDTProperties.Id;
string tag = tagInlines[0].SDTProperties.Tag;

List<StructureDocumentTag> tags = structureTags.tags;
alias = tags[0].SDTProperties.Alias;
id = tags[0].SDTProperties.Id;
tag = tags[0].SDTProperties.Tag;

}
}
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);
}
}
}
else if (obj.DocumentObjectType == DocumentObjectType.Table)
{
foreach (TableRow row in (obj as Table).Rows)
{
foreach (TableCell cell in row.Cells)
{
foreach (DocumentObject cellChild in cell.ChildObjects)
{
if (cellChild.DocumentObjectType == DocumentObjectType.StructureDocumentTag)
{
structureTags.tags.Add(cellChild as StructureDocumentTag);
}
else if (cellChild.DocumentObjectType == DocumentObjectType.Paragraph)
{
foreach (DocumentObject pobj in (cellChild 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 tagInlines
{
get
{
if (m_tagInlines == null)
m_tagInlines = new List();
return m_tagInlines;
}
set
{
m_tagInlines = value;
}
}
List<StructureDocumentTag> m_tags;
public List tags
{
get
{
if (m_tags == null)
m_tags = new List();
return m_tags;
}
set
{
m_tags = value;
}
}
}

效果截图

行中的内容控件

C#获取Word文档中内容控件的别名、标签和ID

表格中的内容控件

C#获取Word文档中内容控件的别名、标签和ID


欢迎下载|体验更多E-iceblue产品

获取更多信息请咨询  ;技术交流Q群(767755948)


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@wqylolg.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
Spire.Doc for .NET

Spire.Doc for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。

Spire.Office for .NET

专业的.NET Office套件,涵盖office文档创建、编辑、转换、管理和OCR内容识别等操作

Spire.XLS for .NET

Spire.XLS for .NET是专业.NET Excel组件,快速完成对Excel各类编程操作

Aspose.PDF for .NET

PDF文档创建组件,无需Adobe Acrobat,也可以在任何平台上操作PDF文档。

Aspose.Words for .NET

无需Microsoft Word也可在任何平台上满足Word文档的一切操作需求。

title
title
title
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP