是否有一种方法来提取使用Word文档的xml文件的样式属性?



我想提取一些属性,例如outlinlevel样式"heading1"但我真的不知道如何做到这一点,我尝试过,只使用javascript在办公室的API,但这也不工作。

就像我说的,我使用office.js来操作我的文档,但是它不能从中提取样式属性。

function stylePropertiesCatch() {
Word.run((context) => {
var heading1Style = context.document.styles.getByTitle("heading1");
heading1Style.load("font, color, size, spacing, outlineLevel");
return context.sync().then(function () {
console.log("Font: " + heading1Style.font.name);
console.log("Color: " + heading1Style.color);
console.log("Size: " + heading1Style.size);
console.log("Spacing: " + heading1Style.spacing.before + ", " + heading1Style.spacing.after);
console.log("Outline Level: " + heading1Style.outlineLevel);
});
});
}

这就是测试#21中这个函数的样子,它看起来好像context .document.styles不是一个对象,我可以从中得到一个重要的样式。我现在试图操纵xml形式的这个文件,我可以得到一个名称和基础支撑从风格,但在这个文件只有也许4/5 w:样式标签和其他风格lsdException标签巨大没有任何道具,我可以提取我看到一些tutorails如何看到它缝有风格的道具,我需要修改这些风格bcs否则他们有默认道具的属性。但是,我可以在哪里找到默认的道具,或者从哪里提取它们呢?

这就是lsdException标签在xml文件中的样子

<w:lsdException w:name="heading 1" w:uiPriority="9" w:qFormat="1"/>

这就是样式标签在XML文件 中的样子
<w:style w:type="character" w:default="1" w:styleId="DefaultParagraphFont">
<w:name w:val="Default Paragraph Font"/>
<w:uiPriority w:val="1"/>
<w:semiHidden/>
<w:unhideWhenUsed/>
</w:style>

实际上,预览版中有一些api可以提取样式和相应的属性。你可以使用document . getstyles () API从文档中获取样式,并使用SectionCollection.getByName() API进行过滤。在您的例子中,代码应该是

await Word.run(async (context) => {
let heading1Style = context.document.getStyles().getByName("Heading 1");
heading1Style.load("font, font/color, font/size, paragraphFormat/lineSpacing, paragraphFormat/outlineLevel");
await context.sync();
console.log(heading1Style.font);
console.log(heading1Style.font.color);
console.log(heading1Style.font.size);
console.log(heading1Style.paragraphFormat.lineSpacing);
console.log(heading1Style.paragraphFormat.outlineLevel);
});

有关样式的更多属性和方法,请参阅https://learn.microsoft.com/en-us/javascript/api/word/word.style?view=word-js-preview。