本文介绍了使用Office.JS API列出/枚举所有Word样式(自定义和预定义)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Java Office API开发Word外接程序,并具有以下要求:

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

  • 列出带有本地化名称的内置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()这里以平面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得到基本概念)

这篇关于使用Office.JS API列出/枚举所有Word样式(自定义和预定义)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 02:10