Question

Je suis en train de lire le document docx Word 2007.

Le document semble bien l'intérieur de Word, mais lorsque je tente de lire id en utilisant mon code, tous les objets ont RunProperites Run null définir.

La propriété que je suis plus intéressé est RunProperies.FontSize, mais malheureusement, il est nul aussi bien, la seule propriété que je peux accéder est InnerText.

Mon code ressemble à ceci:

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
        }
    }
}

J'ai minimisais mon document aussi simple que possible, et il semble que cette http://dl.dropbox.com/u/204110/test.docx

J'ai un document similaire qui est lu bien. Est-il possible qu'il y ait un bogue dans OpenXML SDK 2?

Quelqu'un at-il eu des problèmes similaires? Toute aide serait appréciée. Merci!

Était-ce utile?

La solution

FontSize n'est pas un élément nécessaire, et ni est RunProperties . Pour chaque course, vérifiez que r.RunProperties est non nul, puis vérifiez que r.RunProperties.FontSize est non nul avant d'essayer de lire les valeurs. Quelque chose le long des lignes de:

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

Si vous regardez le fichier docx que vous avez fourni à l'aide de l'outil DocReflector qui vient avec le SDK, vous pouvez voir que les 3 premières pistes ont une taille de police spécifiée, mais la 4ème course ne fonctionne pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top