C# Word文档中找不到段落和表格(开放式XML)
我已经使用MS Word创建了简单的开放式XML文档(.dotx)。该文件包含简单文本和一个表。我试图用新文本替换文本中的一些自定义占位符,但是下面的代码片段在文档中找不到任何C# Word文档中找不到段落和表格(开放式XML),c#,ms-word,openxml,C#,Ms Word,Openxml,我已经使用MS Word创建了简单的开放式XML文档(.dotx)。该文件包含简单文本和一个表。我试图用新文本替换文本中的一些自定义占位符,但是下面的代码片段在文档中找不到任何段落或表格。我尝试创建了几个新的.dotx文件,还尝试了文档类型的不同变体,即使用MS Word创建的.dotx和(严格开放XML).docx,但问题仍然存在 using (WordprocessingDocument doc = WordprocessingDocument.Open(tem
段落
或表格
。我尝试创建了几个新的.dotx文件,还尝试了文档类型的不同变体,即使用MS Word创建的.dotx
和(严格开放XML).docx
,但问题仍然存在
using (WordprocessingDocument doc =
WordprocessingDocument.Open(templatePath, true))
{
var body = doc.MainDocumentPart.Document.Body;
var paras = body.Elements<Paragraph>(); // <-- always empty
var tables = body.Descendants<Table>(); // <-- always empty
foreach (Table t in tables)
{
t.Append(new TableRow(new TableCell(new Paragraph(new Run(new Text("test"))))));
}
foreach (var para in paras)
{
foreach (var run in para.Elements<Run>())
{
foreach (var text in run.Elements<Text>())
{
if (text.Text.Contains("###name###"))
{
text.Text = text.Text.Replace("###name###", "Sample");
}
}
}
}
doc.SaveAs(resultPath);
}
当您使用诸如MS Word之类的编辑器创建文档时,它可以添加一些容器来包装您的段落,我建议您检查生成的xml。要做到这一点,您只需将
.docx
重命名为.zip
,然后打开该归档文件
在里面你会发现这样的文件
您需要使用任何文本编辑器打开word/document.xml
,然后查看
是否在那里,它是否是
的直接子级。如果不是直接的,请使用子体
方法
var paras = body.Descendants<Paragraph>(); // <-- always empty
var-paras=body.subjects();//您好,我刚刚检查了这个,似乎-
是直接子项,因为我在测试模式下可以使用任何编辑器。。你能推荐一个吗?我的意思是记事本、VS代码或AtomI已经成功地打开了文件,并且序列似乎如上所述是正确的。我还尝试用写字板重新创建文件,但问题似乎仍然存在。我看不出您的代码中有问题。能否检查模板路径是否有效,以及文件是否位于正确位置?您的代码中的resultPath
是什么?是的,文件是有效的,因为我看到它是通过“using”语句加载的。。。另外,我在后面的代码中使用了相同的路径。。所以没问题。
var paras = body.Descendants<Paragraph>(); // <-- always empty