将文档或模板的部分内容绑定到数据。您可以将内容控件绑定到数据库字段、.NET Framework 中的托管对象、存储在文档中的 XML 元素以及其他数据源。
参考这篇文章检查旧方法: Get alias, tag and id of content controls in a Word document in C#
以下是测试文件new.docx。

以下是步骤:
第 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");
结果截图:


完整代码:
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进行处理,非常感谢!