彩票走势图

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@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP