彩票走势图

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

翻译|使用教程|编辑:胡涛|2022-08-11 10:35:26.277|阅读 152 次

概述:本文主要介绍新方法在 C# 中获取 Word 文档中内容控件的别名、标签和 ID

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

内容控件为您提供了一种设计文档的方法。当您向文档添加内容控件时,该控件由边框、标题和临时文本标识,这些文本可以向用户提供说明,并且可以防止用户编辑或删除文档的受保护部分。

将文档或模板的部分内容绑定到数据。您可以将内容控件绑定到数据库字段、.NET Framework 中的托管对象、存储在文档中的 XML 元素以及其他数据源。

Spire.Doc for.NET 最新下载

本文说明了如何通过Spire.Doc使用新方法获取所有控件及其属性,包括别名、id 和标签,并将 Barcode 替换为另一个图像。

参考这篇文章检查旧方法: Get alias, tag and id of content controls in a Word document in C#

以下是测试文件new.docx。

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

以下是步骤:

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

Document doc = new Document(@"new.docx");

第 2 步:创建一个列表 StructureDocument 来存储标签。在这里,每个内容控件都将由标签标识。


public class StructureTags
{
List m_structureDocumnt;
public List StructureDocument
{
get
{
if (m_structureDocumnt == null)
m_structureDocumnt = new List();

return m_structureDocumnt;
}
}

}



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


foreach (Section section in doc.Sections)
{
foreach (Body body in section.ChildObjects)
{
ModifyBody(body);
}
}


第 4 步:显示所有控件的属性。


List tagInlines = structureTags.StructureDocument;
Console.WriteLine("Part1");
for (int i = 0; i < tagInlines.Count; i++)
{
string alias = tagInlines[i].SDTProperties.Alias; // Can be null or empty
decimal id = tagInlines[i].SDTProperties.Id;
string tag = tagInlines[i].SDTProperties.Tag;
string STDType = tagInlines[i].SDTProperties.SDTType.ToString();

Console.WriteLine("{0,20},{1,15},{2, 10} - {3}", alias, id, STDType, tag);
Console.ReadKey();
}


第 5 步:替换图片内容控件内的图像。


doc.SaveToFile("replace1.docx", FileFormat.Docx2013);
System.Diagnostics.Process.Start("replace1.docx");


结果截图

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

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

完整代码


using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System;
using System.Drawing;
namespace GetAlias
{

class Program
{

static StructureTags structureTags = new StructureTags();
static void Main(string[] args)
{
Document doc = new Document(@"new.docx");

foreach (Section section in doc.Sections)
{
foreach (Body body in section.ChildObjects)
{
ModifyBody(body);
}
}

List tagInlines = structureTags.StructureDocument;
Console.WriteLine("Part1");
for (int i = 0; i < tagInlines.Count; i++)
{
string alias = tagInlines[i].SDTProperties.Alias;
decimal id = tagInlines[i].SDTProperties.Id;
string tag = tagInlines[i].SDTProperties.Tag;
string STDType = tagInlines[i].SDTProperties.SDTType.ToString();

Console.WriteLine("{0,20},{1,15},{2, 10} - {3}", alias, id, STDType, tag);
Console.ReadKey();

if (tagInlines[i].SDTProperties.SDTType == SdtType.Picture)
{
DocPicture picture = tagInlines[i].ChildObjects.FirstItem as DocPicture;
if (picture == null)
{
picture = new DocPicture(doc);
picture.LoadImage(Image.FromFile(@"cat.jpg"));
tagInlines[i].ChildObjects.Add(picture);
}
else
{
picture.LoadImage(Image.FromFile(@"cat.jpg"));
}
}
}

doc.SaveToFile("replace1.docx", FileFormat.Docx2013);
System.Diagnostics.Process.Start("replace1.docx");
}

static void ModifyBody(Body body)
{
if (body == null)
return;

foreach (DocumentObject docObj in body.ChildObjects)
{
if (docObj is StructureDocumentTag)
{
structureTags.StructureDocument.Add(docObj as StructureDocumentTag);

}
else if (docObj is Table)
{
ModifyTable(docObj as Table);
}
else if (docObj is Paragraph)
{
ModifyParagraph(docObj as Paragraph);
}
}
}

static void ModifyTable(Table table)
{
if (table == null)
return;

foreach (TableRow row in table.Rows)
{
foreach (TableCell cell in row.Cells)
{
if (cell is StructureDocumentTagCell)
{
structureTags.StructureDocument.Add(cell as StructureDocumentTagCell);
}
else
{
ModifyBody(cell);
}
}
}
}

static void ModifyParagraph(Paragraph para)
{
if (para == null)
return;

foreach (DocumentObject docObj in para.ChildObjects)
{
if (docObj is StructureDocumentTagInline)
{

structureTags.StructureDocument.Add(docObj as StructureDocumentTagInline);
}
}
}

public class StructureTags
{
List m_structureDocumnt;
public List StructureDocument
{
get
{
if (m_structureDocumnt == null)
m_structureDocumnt = new List();

return m_structureDocumnt;
}
}
}

}
}

 




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

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


标签:

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


为你推荐

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


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP