Domanda

Sto cercando di leggere documento di Word 2007 docx.

Il documento di Word guarda bene dentro, ma quando provo a leggere id usando il mio codice, tutti gli oggetti Run hanno RunProperites impostare nulla.

La proprietà che mi interessa di più è RunProperies.FontSize, ma purtroppo è nullo, così, l'unica proprietà che posso accedere è InnerText.

Il mio codice è simile al seguente:

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

Ho ridotto al minimo il mio documento per il più semplice possibile, e sembra che questo http://dl.dropbox.com/u/204110/test.docx

Ho documento simile che viene letto bene. E 'possibile che ci sia un bug in OpenXML SDK 2?

Qualcuno ha avuto problemi simili? Qualsiasi aiuto sarebbe apprezzato. Grazie!

È stato utile?

Soluzione

FontSize non è un elemento necessario, né è RunProperties . Per ciascun passaggio, verificare che r.RunProperties non è nullo, e quindi verificare che r.RunProperties.FontSize non è nullo prima di tentare di leggere i valori. Qualcosa sulla falsariga di:

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

Se si guarda il file docx da Lei forniti con lo strumento DocReflector che viene fornito con l'SDK, si può vedere che i primi 3 piste hanno una dimensione del carattere specificato, ma il 4 ° periodo non lo fa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top