同步()后,Excel加载项变为空白

时间:2018-01-24 15:14:22

标签: angularjs excel office-js

我使用AngularJS应用创建了一个Excel加载项,我的行为非常奇怪。

在一段时间不活动(约2-3分钟)后,当用户执行需要sync()的操作时,加载项会消失(变为空白),但不会抛出任何异常

代码的结构如下(只是一个例子):

AngularJS控制器调用:

$scope.hearbeat = function () {
  excelService.heartbeat(EXCEL_RESOURCES.WorkSheetName, EXCEL_RESOURCES.TableName);
};

Excel服务是使用Excel.Run

的AngularJS服务
this.heartbeat = function (worksheetName, tableName) {
    console.log('heartbeat');

    var deferred = $q.defer();

    Excel.run(function (ctx) {
        // Create Proxy for the current opened worksheet
        var sheet = ctx.workbook.worksheets.getItem(worksheetName);
        sheet.tables.load("name");

        var table = sheet.tables.getItem(tableName);
        var tableRows = null;
        return ctx.sync()
            .then(function () {
                tableRows = table.rows;
                tableRows.add();
            })
            .then(ctx.sync)
            .then(function () {
                table = sheet.tables.getItem(tableName);
            })
            .then(ctx.sync)
            .then(function () {
                var lastRow = table.getRange().getLastRow();
                lastRow.delete();
            })
            .then(ctx.sync);
    }).then(function () {
        deferred.resolve(true);
    }).catch(function (err) {
        var error = excelService.convertError(err);
        deferred.reject(error);
    });
    return deferred.promise;
};

只有在Excel Online中使用加载项时才会发生这种情况,而且甚至不会抛出异常,这真的很奇怪。

有没有办法重新初始化Office.js集成?

0 个答案:

没有答案