You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 12:58:12