.NET OpenXML SDK 2 RunProperties sono Null
-
23-09-2019 - |
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!
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.