【问题标题】:Excel: How to determine if a cell is in edit mode prior to running context.sync()Excel:如何在运行 context.sync() 之前确定单元格是否处于编辑模式
【发布时间】:2021-01-20 14:08:05
【问题描述】:

我正在开发的一个插件在单元格处于编辑模式时遇到 context.sync 失败的问题。

我想在 Excel.Run 中使用 delayForCellEdit,但它会导致 UI 挂起,直到用户退出编辑模式。

有没有办法在调用 context.sync 之前确定 Excel 是否处于编辑模式?

我的第一爱好是跑步

Excel.run(ctx => { 
  ctx.sync().then(() => { 
    console.log("not in edit mode); 
  }).catch(err => { 
    console.log("in edit mode");
  });
});

每隔几秒就有一次心跳,但想要更优雅一点的东西。

【问题讨论】:

    标签: excel office-js office-js-ux


    【解决方案1】:

    目前我们只支持delayForCellEdit 延迟context.sync() 直到退出编辑模式。而且我在本地测试没有遇到你提到的挂起问题。

    这是我的测试示例代码,仅供您参考: $("#run").click(() => tryCatch(run));

    async function run() {
      await Excel.run({ delayForCellEdit: true }, async context => {
        let sheet;
        sheet = context.workbook.worksheets.getItem("Sheet1");
        let range = sheet.getRange("A1");
        range.values = [["1"]];
        await context.sync();
      }); 
    }
    

    【讨论】:

    • 请仅在 cmets 中添加问题。
    • 这很不幸。问题是我们的插件是如何在初始化之前编码和获取保存的数据的。我希望有一种方法可以检测到这一点,从而向用户显示一条消息,而不会强制它。
    • 所以挂起与“delayForCellEdit”无关,对吧?
    • 根据您的要求,您的意思是您正在获取数据以放入 Excel 工作表,并且您不希望用户在尝试编辑工作表时通过显示消息来中断进度?
    • @gingerjiang 我们在启动时获取保存的数据,因此插件挂起,因为我们无法获取保存的数据并加载 UI。我们也不希望用户在加载新数据时编辑单元格,因为这可能是一个缓慢的过程,具体取决于他们从我们的服务请求的数据量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-07
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多