我正在尝试使用Word外接Javascript API来打印文档中列表的级别和样式类型。
我正在使用以下代码:
Word.run(function (context) {
var range = context.document.getSelection();
var paragraphs = context.document.body.paragraphs.load("items");
var lists = [];
return context.sync()
.then(function () {
for (var i = 0; i < paragraphs.items.length; i++) {
if (paragraphs.items[i].isListItem) {
lists.push(paragraphs.items[i].listItem.load(['level', 'listString']));
}
}
})
.then(context.sync)
.then(function () {
for (var i = 0; i < lists.length; i++) {
range.insertText(lists[i].level.toString(), "End");
}
}).then(context.sync)
})
这将正确给出列表的级别,但是listString
给出列表编号而不是其类型,即对于1. This is a list item
,它将返回1.
。我尝试在levelTypes
类中使用Word.List
,但它仅返回数字,项目符号或图片。我想要特定的类型,例如“罗马” | “阿拉伯语” | “字母” | “实心” | “空心”等...
有API setLevelBullet
和setLevelNumbering
来设置这些值,但找不到任何允许读取的值。
我尝试将其转换为OOXML,但它也没有提供所使用的列表样式的类型。
我能够使用pypandoc库在python中执行此操作。它将文档转换为HTML,然后我可以解析ul和ol标记以查找其类型。 Word加载项中有某种方法可以做到这一点吗?
谢谢!
两个Word对象模型(COM或JavaScript)都不提供此信息。 Word不是HTML,也不用ol
/ ul
来“思考”-所有列表都是(9级)列表,每个级别都有一组特定的字符(或没有)作为“前缀”段落。
有必要编写自己的代码来分析listString
,或使用执行此操作的库。可能基于Unicode值。