0

我正在使用 Javascript Office API 开发 Word 插件,并具有以下要求:

  • 列出文档中所有自定义/用户定义的字样式并获取类型(例如,它是表格样式还是段落/字符样式等)

  • 列出具有本地化名称的内置单词样式并获取类型

我唯一发现的是预定义样式的内置 Word.Style 枚举,我找不到获取本地化名称的方法。

感谢您的帮助!

4

1 回答 1

0

我认为目前最好的选择是将文档获取为 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得到了基本的想法)

于 2021-11-17T02:07:46.033 回答