【问题标题】:Disable task pane of the excel addin while cell is being edited by user用户正在编辑单元格时禁用 excel 插件的任务窗格
【发布时间】:2019-01-04 15:34:14
【问题描述】:

我使用 Excel 插件并使用 office.js 库。我的插件应该在服务器上保存一些数据,在用户按下任务窗格上的“SaveData”按钮后输入到单元格中。一切正常,除了用户在单元格中输入内容并立即(不按 Enter 或单击另一个单元格)单击按钮“SaveData”的情况。我收到错误代码“InvalidOperationInCellEditMode”和描述“Excel 处于单元格编辑模式...”。

我添加了以下代码来捕获此异常并在任务窗格上显示消息,但它不能被认为是用户友好的行为。

function SaveData() {

    Excel.run(function (ctx) { 

        return ctx.sync().then(function() {
        // HERE I HAVE SOME CODE THAT WORKS IF CELL IS NOT BEING EDITED
        });
    }).catch(function(error) {
        console.log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: " + JSON.stringify(error.debugInfo));
            // HERE I HAVE SOME CODE THAT SHOWS MESSGE ON TASK PANE

        }
    });
}

当用户编辑单元格时,有什么方法可以阻止任务窗格,就像它适用于某些原生 Excel 按钮一样?

UPDATE1:是否可以通过API完成用户的编辑并在此之后执行代码?

【问题讨论】:

    标签: excel office-js excel-addins


    【解决方案1】:

    感谢您的反馈。

    我是一名从事 Office JavaScript API 工作的工程师。 对于您的问题,目前还没有办法禁用任务窗格。但我们对 beta API 进行了另一项改进,这可能会延迟 API 的执行,直到用户退出 CellEditMode。

    如果有帮助,请告诉我,我可以分享更多详细信息。

    【讨论】:

    • 感谢您的推荐。如果您的意思是 Excel.run({ delayForCellEdit: true }, function (context) { ... }) 选项,与延迟有关,我会说它对我不起作用,因为对于用户来说,它看起来像 Addin 没有不工作。此外,如果用户在退出 CellEditMode 之前多次按下按钮,则与此按钮相关的所有代码也将被执行多次,这在我的情况下是不正确的。我需要其他解决方案。
    • @AndrewKhramov 有没有办法在进入单元格编辑模式时注册事件?当用户可能反复遇到此错误时,Excel 加载项任务窗格的用户体验不是很好。我想先发制人地禁用导致 API 被调用的任务窗格按钮,并在它们下面添加消息来解释原因。但要做到这一点,我需要知道他们处于编辑模式以及何时退出。谢谢。
    【解决方案2】:

    我们有另一种方法来解决这个问题。在正文中写文本“请在 Excel 工作表中按 Enter 键或 ESC”。

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多