问题
I'm retrieving paragraph stylenames from openXML and using paraID property to get the right one.
During testing i noticed that depending on the word document the attribute might not be present on any of the paragraphs.
I do know that this is a internal runtime paragraph id for Word.
So the question is: What generates the paraId properties on the paragraphs, can't seem to figure this out.
ps. I don't want to use get_style() since that is waay too slooooow...
edit: added code example
This is in some documents "0" and in some documents a valid hex id
string sParaId = range.Paragraphs.First.ParaID.ToString("x").ToUpper();
This open xml document sometimes have valid w14:paraId-attribute and sometimes it is missing:
activeDocument = Globals.ThisAddIn.Application.ActiveDocument;
wordXML = XElement.Parse(activeDocument.WordOpenXML);
... I would like to get the styleName something like this from the WordOpenXML but for now it seems i might go for some other option since I don't know when paraId is added in the XML.
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";
回答1:
From the Word Language Reference for Paragraph.ID:
Returns or sets the identifying label for the specified object when the current document is saved as a Web page.
Since the document is not saved as HTML the property has no meaning.
The ParaId property is not exposed for developers to use. It's not visible in the VBA object model, but due to the way the PIA (primary interop assemblies) are generated the .NET developer will see it. From the language reference:
Reserved for internal use.
Not sure what it is you're really trying to do, but you can use Word's Range.Find capability to search formatting (styles).
来源:https://stackoverflow.com/questions/50136802/word-vsto-why-paraid-is-sometimes-missing