【问题标题】:List/Enumerate all Word Styles (custom & predefined) with Office.JS API使用 Office.JS API 列出/枚举所有文字样式(自定义和预定义)
【发布时间】:2021-12-27 08:08:18
【问题描述】:

我正在使用 Javascript Office API 开发 Word Addin,并且有以下要求:

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

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

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

感谢您的帮助!

【问题讨论】:

    标签: ms-word office-js


    【解决方案1】:

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

    【讨论】:

    • 嘿,dariok,感谢您的回答!昨天我也实施了这种方法。我认为它适用于文档中使用的用户定义样式和内置样式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 2014-12-12
    • 2010-09-12
    • 1970-01-01
    相关资源
    最近更新 更多