我从openXML中检索段落样式名,并使用paraID属性来获取正确的名称。
在测试期间,我注意到,根据word文档,该属性可能不会出现在任何段落上。
我知道这是Word的内部运行时段落ID。
所以问题是:在段落上生成paraId属性的原因似乎无法解决这个问题。
PS。我不想使用get_style(),因为那太慢了......
编辑:添加代码示例
这是在一些文件" 0"在某些文档中有效的十六进制ID
string sParaId = range.Paragraphs.First.ParaID.ToString("x").ToUpper();
这个打开的xml文档有时具有有效的w14:paraId属性,有时它会丢失:
activeDocument = Globals.ThisAddIn.Application.ActiveDocument;
wordXML = XElement.Parse(activeDocument.WordOpenXML);
...我想从WordOpenXML获得类似这样的styleName,但是现在看来我可能会选择其他选项,因为我不知道何时在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";
答案 0 :(得分:0)
来自Paragraph.ID的Word语言参考:
返回或设置指定对象的标识标签 当前文档保存为网页。
由于文档未保存为HTML,因此该属性没有意义。
开发人员不会公开ParaId
property。它在VBA对象模型中不可见,但由于生成PIA(主互操作程序集)的方式,.NET开发人员将看到它。从语言参考:
保留供内部使用。
不确定你真正想要做什么,但你可以使用Word的Range.Find功能来搜索格式(样式)。