0

我正在尝试使用 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给出了列表编号而不是它的类型,即 For 1. This is a list item,它将返回1.。我尝试levelTypesWord.List课堂上使用,但它只返回数字、子弹或图片。我想要特定类型,例如“罗马”| “阿拉伯语” | 《信》 | “固体” | “空心”等...

有 API可以设置这些值setLevelBulletsetLevelNumbering但找不到任何允许读取的值。

我尝试将其转换为 OOXML,但它也没有给出使用的列表样式的类型。

我可以使用 pypandoc 库在 python 中执行此操作。它将文档转换为 HTML,然后我可以解析 ul 和 ol 标签以查找它们的类型。有没有办法在 Word 加载项中做到这一点?

谢谢!

4

2 回答 2

0

我尝试将其转换为 OOXML,但它也没有给出使用的列表样式的类型。

OOXML 拥有您需要的所有信息。Document.xml 在标记为 listItem 的段落中具有 listId。它引用了 numbering-xml 文件,该文件具有特定列表的信息及其每个级别的格式。ListId:s 指向编号文件末尾的抽象块,指向实际的格式定义。

不是 100% 确定您是否也可以使用段落 styleId 指向格式。

于 2020-04-29T06:50:37.920 回答
0

Word 对象模型(COM 或 JavaScript)都不提供此信息。Word 不是 HTML,也不会“思考” ol/ ul- 所有列表都只是(9 级)列表,每个级别都有一组特定的字符(或没有)来为段落“加前缀”。

有必要编写自己的代码来分析listString,或使用执行此操作的库。可能基于 Unicode 值。

于 2019-12-08T21:21:26.180 回答