Office js 如何检查空文档?

Office js 如何检查空文档?,office-js,Office Js,我需要检测文档是否为空,如果为空,则使用Word加载项向用户显示提示 有没有办法从OfficeJS Word加载项或通过API检测空文档?您应该能够获取文档的段落集合并使用该集合执行检查,类似以下内容: Word.run(function (context) { var paragraphs = context.document.body.paragraphs; context.load(paragraphs, 'text'); return context.sync(

我需要检测文档是否为空,如果为空,则使用Word加载项向用户显示提示


有没有办法从OfficeJS Word加载项或通过API检测空文档?

您应该能够获取文档的段落集合并使用该集合执行检查,类似以下内容:

Word.run(function (context) {
    var paragraphs = context.document.body.paragraphs;
    context.load(paragraphs, 'text');

    return context.sync().then(function () {
        if (paragraphs.items.length === 0) {
            // Empty document!
        }
    });
});
这将适用于完全空白的文档。如果您希望更加严格,则需要对每个
段落.items[]
对象的
text
属性添加额外的检查


body.text.trim().length返回文档中的字符数。如果为空,则文档长度将为0,条件将计算为false,否则将执行部分。

这没有考虑页眉和页脚文本,这就是我发布此问题以寻求更精简的解决方案的原因。您可以使用context.document.sections访问页眉/页脚,页眉/页脚是正文对象(并有自己的段落集合)。或者,您可以加载context.document.body,调用body.getOoxml(),并使用正则表达式查找任何现有段落(
),运行(
)和文本(
)标签。我相信这也可以解释页眉和页脚。我不确定您最初提出的解决方案中是否只缺少页眉/页脚。我如何才能真正确保文档确实是空的?使用
document.getFileAsync(Office.FileType.Text,…)获得了一个近乎完美的解决方案
方法,该方法返回文档中的所有文本。对于空文档,该方法返回可替换为空字符串的
\r\n
,因此空文档本质上表示将与最终文档文本匹配的空文本(替换
\r\n
)我说近乎完美,因为它不考虑空表、图像或插入文档的对象。但是,由于水印/占位符文本,内容控制很好。
Word.run(function(context) {
                    var body = context.document.body;
                    body.load();
                    return context.sync().then(function() {
                        if(body.text.trim().length) {
                           //Document is not Empty. Add your code here you want to run in this case.
                        }
                        else
                            //Empty Document
                    });
                });