如何使用 C# 和 OpenXml 读取 docx 文件中 table 单元格中的合并域内容
How can I read a mergefield content in table cell on a docx file using C# and OpenXml
我必须自动验证由另一个软件填充的多个 docx 中 tables 的内容,一些单元格包含 mergefield 文本类型,因此我无法访问这些单元格中的文本。
我在此处附加的代码是适用于文本类型单元格的代码:
Table table = wordprocessingDocument .MainDocumentPart.Document.Body.Elements<Table>().First();
TableRow row = table.Elements<TableRow>().ElementAt(i);
TableCell cell = row.Elements<TableCell>().ElementAt(j);
Paragraph parag = cell.Elements<Paragraph>().First();
Run run = parag.Elements<Run>().First();
Text text = run.Elements<Text>().First();
谁能告诉我是否有办法从 table 单元格恢复合并字段的内容。
我终于找到了解决方法,显示文档的 xml 结构对我帮助很大。
通过使用 cell.InnerXml
我注意到 运行 标签存在于 SimpleField 标签中,所以我通过添加一行来调整我的代码。
Table table = wordprocessingDocument.MainDocumentPart.Document.Body.Elements<Table>().First();
TableRow row = table.Elements<TableRow>().ElementAt(i);
TableCell cell = row.Elements<TableCell>().ElementAt(j);
Paragraph parag = cell.Elements<Paragraph>().First();
SimpleField cellfield = parag.Elements<SimpleField>().First();
Run run = cellfield .Elements<Run>().First();
Text text = run.Elements<Text>().First();
我必须自动验证由另一个软件填充的多个 docx 中 tables 的内容,一些单元格包含 mergefield 文本类型,因此我无法访问这些单元格中的文本。 我在此处附加的代码是适用于文本类型单元格的代码:
Table table = wordprocessingDocument .MainDocumentPart.Document.Body.Elements<Table>().First();
TableRow row = table.Elements<TableRow>().ElementAt(i);
TableCell cell = row.Elements<TableCell>().ElementAt(j);
Paragraph parag = cell.Elements<Paragraph>().First();
Run run = parag.Elements<Run>().First();
Text text = run.Elements<Text>().First();
谁能告诉我是否有办法从 table 单元格恢复合并字段的内容。
我终于找到了解决方法,显示文档的 xml 结构对我帮助很大。
通过使用 cell.InnerXml
我注意到 运行 标签存在于 SimpleField 标签中,所以我通过添加一行来调整我的代码。
Table table = wordprocessingDocument.MainDocumentPart.Document.Body.Elements<Table>().First();
TableRow row = table.Elements<TableRow>().ElementAt(i);
TableCell cell = row.Elements<TableCell>().ElementAt(j);
Paragraph parag = cell.Elements<Paragraph>().First();
SimpleField cellfield = parag.Elements<SimpleField>().First();
Run run = cellfield .Elements<Run>().First();
Text text = run.Elements<Text>().First();