我想阅读的Word 2007的docx文档。

中的Word文档看起来不错,但是当我尝试使用我的代码来读取ID,所有的运行对象已RunProperites设置为null。

这是我最感兴趣的属性是RunProperies.FontSize,但不幸的是它是空的好,我可以访问的唯一属性是innerText属性。

我的代码看起来是这样的:

using (WordprocessingDocument doc = WordprocessingDocument.Open(filename, true))
{
    MainDocumentPart mainPart = doc.MainDocumentPart;
    IList<Paragraph> paragraphList = doc.MainDocumentPart.Document.Body.Elements<Paragraph>().ToList<Paragraph>();

    foreach (Paragraph pr in paragraphList)
    {   
        IList<Run> runList = pr.Elements<Run>().ToList<Run>();
        foreach (Run r in runList)
        {
            // Some logic
        }
    }
}

我已经尽量减少我的文档,以尽可能简单,它看起来像这个 http://dl.dropbox.com/u/204110/test.docx

我有被读细类似的文件。是否有可能存在在处理OpenXML一个错误SDK 2?

有没有人有类似的问题?任何帮助将不胜感激。 谢谢!

有帮助吗?

解决方案

<强>字号不是必需的元素,也不是的 RunProperties 即可。对于每次运行,验证的 r.RunProperties 不为空,然后尝试读取值之前验证的 r.RunProperties.FontSize 不为空。沿着线的东西:

uint fontSize = SOME_DEFAULT_FONT_SIZE;
RunProperties propertiesElement = r.RunProperties;
if (propertiesElement != null) {
  FontSize sizeElement = propertiesElement.FontSize;
    if (sizeElement != null) {
      fontSize = sizeElement.Val.Value;
    }
  }
}

如果你看看你提供使用SDK附带的DocReflector工具的docx文件,你可以看到,第3个运行已经字体大小规定,但是第四跑没有。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top