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

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

参考这篇文章检查旧方法: 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 emptydecimal 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产品

获取更多信息请咨询在线客服  


标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年7月8日
下一篇 2022年7月8日

相关推荐

发表回复

登录后才能评论