Word加载项:获取整个文档但File.getSliceAsync方法不返回

时间:2017-01-30 23:37:57

标签: javascript ms-word office-js

我正在创建一个Office加载项,并且在Word Online中使用javascript file.getFileAsync方法时遇到问题(Word 2013桌面很好)。

我正在使用github中的示例代码...

https://github.com/OfficeDev/office-js-docs/blob/master/docs/word/get-the-whole-document-from-an-add-in-for-powerpoint-or-word.md

我的代码看起来像这样......

function getFile() {
        Office.context.document.getFileAsync(Office.FileType.Text,
            { sliceSize: 65536},
            function (result) {

                if (result.status == Office.AsyncResultStatus.Succeeded) {

                    // Get the File object from the result.
                    var myFile = result.value;
                    var state = {
                        file: myFile,
                        counter: 0,
                        sliceCount: myFile.sliceCount
                    };

                    getSlice(state);
                }
            });
    } 

    function getSlice(state) {
        state.file.getSliceAsync(state.counter, function (result) {
            if (result.status == Office.AsyncResultStatus.Succeeded) {
                sendSlice(result.value, state);
                state.file.closeAsync();
            }
            else if(result.status == 'failed')
                state.file.closeAsync();
        });
    }

在调用file.getSliceAsync之前,数据看起来很好 - myFile.sliceCount是1.结果函数永远不会被调用,并且控制台中不会抛出任何错误。

感谢您提供的任何帮助!

1 个答案:

答案 0 :(得分:0)

更新:此问题已修复并生效。请再试一次它现在必须工作。 谢谢!

---------------- 原始答案仅供参考 ------------------- ---------

是的,Word Online中现在有一个回归,阻止代码成功运行。具体问题是file.getSliceAsync方法永远不会调用回调函数。这只发生在TEXT类型中,如果你想获得docx或pdf,这应该可以正常工作。这个问题将在几周内解决。

如果您想获取可以使用新的Word for Word的文档文本,您可以选择此示例:



Word.run(function(context) {
      var myBody = context.document.body;
      context.load(myBody);
        
        return context.sync()
        .then(function(){
            console.log(myBody.text);
        });
    });




希望这有帮助! 感谢您报告此问题! 涓。