Я получаю названия стилей абзаца из openXML и использую свойство paraID, чтобы получить правильное.
Во время тестирования я заметил, что в зависимости от слова документа атрибут может отсутствовать ни в одном из абзацев.
Я знаю, что это внутренний идентификатор абзаца времени выполнения для Word.
Итак, вопрос в следующем: Что генерирует свойства paraId для абзацев, похоже, не может понять это.
пс. Я не хочу использовать get_style (), так как это слишком медленно ...
edit: добавлен пример кода
В некоторых документах это "0", а в некоторых документах допустимый шестнадцатеричный идентификатор
string sParaId = range.Paragraphs.First.ParaID.ToString("x").ToUpper();
Этот открытый XML-документ иногда имеет действительный атрибут w14: paraId, а иногда его и нет:
activeDocument = Globals.ThisAddIn.Application.ActiveDocument;
wordXML = XElement.Parse(activeDocument.WordOpenXML);
... Я хотел бы получить styleName примерно так из WordOpenXML, но сейчас мне кажется, что я мог бы пойти на какой-то другой вариант, так как я не знаю, когда в XML добавлен paraId.
paraEl = ooXMLElementList.Descendants().Where(x => x.Name.LocalName ==
"p").FirstOrDefault(x => x.Attribute(w14 + "paraId")?.Value == sParaId);
styleName = paraEl.Descendants().FirstOrDefault(x => x.Name.LocalName ==
"pStyle") != null ? paraEl.Descendants().FirstOrDefault(x =>
x.Name.LocalName == "pStyle").Attribute(w + "val").Value : "Normal";