.NET 8中使用OpenXML提取DOCX段落时body.Elements<Paragraph>()集合为空的问题求助
.NET 8中使用OpenXML提取DOCX段落时body.Elements()集合为空的问题求助
各位好,我目前在开发一个.NET 8项目,需求是读取DOCX文件内容,并且要保留精确的格式细节,比如空格、换行以及段落分隔,所以打算用DocumentFormat.OpenXml.Packaging命名空间下的WordprocessingDocument类来实现。
我已经确认目标DOCX文件里确实有文本内容,但遇到了一个奇怪的问题:当我尝试提取段落时,body.Elements<Paragraph>()返回的集合是空的,导致遍历段落的循环完全不会执行。不过有意思的是,我调用body.InnerText却能正常提取到文件里的纯文本内容。
下面是我目前的代码片段:
private string ReadDocxContentWithExactFormatting(string filePath) { try { using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(filePath, false)) { StringBuilder contentBuilder = new StringBuilder(); var body = wordDocument.MainDocumentPart.Document.Body; // 这个循环没有执行,因为body.Elements<Paragraph>()集合为空 foreach (var paragraph in body.Elements<Paragraph>()) { // 原本打算在这里处理段落格式的逻辑 } // 这里能拿到纯文本 contentBuilder.Append(body.InnerText); return contentBuilder.ToString(); } } catch (Exception ex) { // 异常处理逻辑 throw; } }
有没有大佬能帮我看看这是哪里出问题了?为什么段落集合是空的,但InnerText又能拿到内容呢?
备注:内容来源于stack exchange,提问作者User_4373
相关产品推荐
相关产品推荐

