【问题标题】:Unable to edit cells after a setSelectedDataAsync in Excel在 Excel 中的 setSelectedDataAsync 之后无法编辑单元格
【发布时间】:2017-08-01 11:12:19
【问题描述】:

我正在使用 Office 插件平台开发 Excel 插件。在此加载项中,我使用 setSelectedDataAsync** 函数将数据写入范围。它工作正常,但是在写入数据后,我无法删除或编辑单元格(尽管我可以选择新范围),除非我单击工作表外的任何位置或双击一个单元格。我认为这是 Excel 无法正确重新获得焦点的问题(应用顶部的文件名仍然显示为灰色)。

有些用户似乎认为 Excel 变得没有响应,这是一个问题。

这是一个已知问题吗?有解决办法吗?

** 我注意到 setSelectedDataAsync 比将 range.values 设置为矩阵然后 ctx.sync() 更快。不使用后一种方法是否会丢失一些重要功能?

【问题讨论】:

  • 我知道您问的是更广泛的行为问题,但提供示例代码会很有帮助,特别是一个最小的、完整的、可验证的示例 (stackoverflow.com/help/mcve)

标签: excel focus add-in office-js


【解决方案1】:

这不是已知问题(设置数据后无法与工作表交互)。我们可以调查一下。

很惊讶听到setSelectedDataAsync 的工作速度比范围快。values 设置。批处理语法不仅允许您组合一条指令,还可以组合许多相关指令,例如设置数字格式、字体、背景等,并且您可以执行单个 sync() 来批量发送所有指令。因此,将相关指令组合在一起会更有效率。

对于使用哪个 API 没有任何限制;但是 Excel1.1 版本是随 Office 2016 一起推出的,此后已经有许多版本,在此过程中逐渐添加了新功能。

setSelectedDataAsync() API 旨在跨 Excel、Word 等主机工作,因此在设置数字格式、格式等方面没有深入研究。

【讨论】:

  • 我在尝试构建示例时找到了原因。作为加载项的一部分,我在任务窗格中嵌入了一个 iframe,每次我从功能区调用命令时都会加载 iframe,它从 Excel 中获取焦点。我将函数移动到一个单独的函数文件,现在它按预期工作。关于 setSelectedDataAsync 的工作速度比 .values set 快,我的意思是只对一个大矩阵进行一次写入操作,我目前没有批处理指令。非常感谢您抽出宝贵时间,并对原始问题的困惑表示歉意。问候!
猜你喜欢
  • 2015-11-09
  • 2021-04-20
  • 2011-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 2017-11-16
  • 1970-01-01
相关资源
最近更新 更多