我正在使用 Javascript Office API 开发 Word 插件,并具有以下要求:
列出文档中所有自定义/用户定义的字样式并获取类型(例如,它是表格样式还是段落/字符样式等)
列出具有本地化名称的内置单词样式并获取类型
我唯一发现的是预定义样式的内置 Word.Style 枚举,我找不到获取本地化名称的方法。
感谢您的帮助!
我认为目前最好的选择是将文档获取为 Ooxml 并从那里获取样式列表。
简短版本:
您可以使用getSelectedDataAsync()
强制类型Ooxml
来检索文档,然后下降到//pkg:part[@pkg:name="/word/styles.xml"]//w:styles
其中将包含w:style
文档已知的每种样式。
加长版: 试试看。沿着这条线(我在这里使用jQuery来保持简短):
Office.context.document.getSelectedDataAsync(
Office.CoercionType.Ooxml,
( result ) => {
let xml = $.parseXML(result.value);
let styles = $(xml).find("w\\:styles");
styles.children().each( ( index, style ) => {
console.log(style);
});
}
);
getSelectedDataAsync()
这里以 Flat OPC 文件的形式返回文档的完整描述。然后,检索所有后代w:style
。这些元素看起来…… 像这样:
<w:style
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
w:type="paragraph"
w:default="1"
w:styleId="Standard">
<w:name w:val="Normal"/>
<w:qFormat/>
<w:rsid w:val="00BF72CE"/>
<w:rPr>
<w:rFonts w:ascii="Segoe UI Historic" w:hAnsi="Segoe UI Historic" w:cs="Times New Roman"/>
<w:sz w:val="22"/>
<w:szCs w:val="22"/>
</w:rPr>
</w:style>
您会对属性w:style/@w:styleId
(如果是预定义样式,则为该样式的内部 ID)和w:style/w:name/@w:val
(该样式的(本地化)名称)感兴趣。
(我从https://stackoverflow.com/a/39355093/1652861得到了基本的想法)