excel - Office.js | Excel 加入 | 点击获取选定的单元格地址
问题描述
我正在使用 Office.js 开发 Excel Web 加载项。我需要通过以下场景获取选定单元格的地址:
- 打开 Excel,不要加载加载项,单击 Excel 工作表区域中的任何单元格。例如:A4
- 加载加载项。
- 再次单击与加载我们选择的加载项之前在工作表区域突出显示的相同单元格编号,例如:A4。
它没有触发以下代码:
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged,
function (eventArgs) {
Excel.run(function (ctx) {
var range = ctx.workbook.getSelectedRange();
range.load(['address', 'values']);
return ctx.sync().then(function () {
showNotification("", range.values[0][0] + " Address:" + range.address);
});
});
});
注意: 如果我选择了以前选择的单元格 ID 以外的单元格 ID,例如 A5,它的工作。即使我再次尝试从单元格 id A5 选择到先前选择的单元格 id A4,它也可以正常工作。 只有当我们尝试选择相同的单元格时,它才不会触发事件。花很多时间有人可以帮助或它在microsoft excel中的限制吗?
解决方案
我认为这是设计使然,因为您正在收听 SelectionChanged 事件,如果当前选择是 A4,并且您单击 A4,它不会触发事件,因为您没有更改选择。
我不确定您的情况,如果您想显示当前选择,您可以在注册事件之前添加代码。这是一个示例代码
async function run() {
await Excel.run(async (context) => {
var range = context.workbook.getSelectedRange();
range.load();
await context.sync();
console.log(range);
Office.context.document.addHandlerAsync(Office.EventType.DocumentSelectionChanged, showSelection);
});
}
async function showSelection(){
Excel.run(async (context) => {
var range = context.workbook.getSelectedRange();
range.load();
await context.sync();
console.log(range);
});
}
推荐阅读
- mysql - ELK Docker 设置中的 Logstash/JDBC 配置
- android - Firebase android实现实时数据库问题
- nginx - 如何启用 TRACE 方法 nginx 反向代理
- postman - 上传文件失败 Postman
- excel - 通过保持第一个单元格的格式连接两个相邻单元格的宏
- here-api - HERE 地图 - Infobubble 关闭事件/挂钩
- javascript - 如何在原生反应中操纵 3d 模型的单个骨骼?
- javascript - 使用地图而不执行和组合绑定 - JavaScript
- java - 已解决 [org.springframework.web.HttpRequestMethodNotSupportedException:不支持请求方法“POST”]
- javascript - 如何在 Angular 8 中动态更改下拉值?