Script Lab 06:事件处理,Excel 基础操作(4)

简介: Script Lab 06:事件处理,Excel 基础操作(4)

准备工作

事件驱动编程,可以让操作变能更丰富,更改事件可能会使事情变得更容易处理。开发者可以靠着各种事件的的触发来设计可以自动执行的 Office 应用,比如可以在工作表中的选择时发生的事件,就是一个常见的应用场景。

如果曾经使用 VBA 的事件,会麻烦一些,而 VSTO 则要方便得多,通过重载运算符来操作。在 OfficeJS 中,事件操作介于两者之间,比 VSTO 要麻烦些,必须没有重载机制,但是比 VBA 又要简单些。我们先来看看传统的 Office 事件声明方式:

image.png

工作表事件

【VBA】

在工作表中的选择时发生的事件,也是事件驱动编程最常用到的一种。VBA 通常使用 Worksheet.SelectionChange 事件来检测工作表上的选择更改:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Debug.Print Target.AddressEnd Sub

【OfficeJS】

核心代码为:

sheet.onSelectionChanged.add(onSelectionChanged);

Excel.run ( async (context) => 
{ 
 //准备工作 const sheet = await
 OfficeHelpers.ExcelUtilities.forceCreateSheet(context.workbook, "MySheet"); 
 sheet.activate; OfficeHelpers.UI.notify("MySheet worksheet created !"); 
 await context.sync;
 //注册事件 var eventResult = sheet.onSelectionChanged.add(onSelectionChanged); 
 OfficeHelpers.UI.notify("MySheet worksheet SelectionChange event registed !") await context.sync;
 //事件函数 
 function onSelectionChanged(event)
 { 
 console.log(JSON.stringify(event)); 
 } 
} 
);


事件输出效果:

image.png

【小技巧】

Script Lab 编辑器不支持中文:

注释可以先写好,然后贴入代码。

notify 的提示目前中文均是乱码,无解。

image.png

【注销事件】

核心代码为:

eventResult.remove;

eventResult.remove;


后记

一个项目,有了事件驱动,才算能上真正的完整。加上前几节内容讲述了代码框架、Office JavaScript API 助手、Excel Api (数据操作),理论上您己经可以像 VBA 一样,创作出大部分的流程应用了。也希望将你的实践案例分享出来。

相关文章
|
11月前
|
Shell 开发工具 git
上传文件到gitee(小白都能学会)
上传文件到gitee(小白都能学会)
2538 12
|
存储 SQL 弹性计算
JVM时区配置-两行代码让我们一帮子人熬了一个通宵
不经意的两行代码让我们一帮子人熬了一个通宵
25917 10
|
Java 程序员 C语言
程序员都秃顶?Python创始人笑了,养生还得学这门语言
程序员爱脱发,是不争的事实,经常面对电脑,工作压力大,都会导致脱发的产生。正所谓“聪明绝顶”,越厉害的程序员,谢顶的可能性就越大。那么,我们看看世界上顶级的程序员们,看看是否能从中找到规律。
6013 0
|
Linux 调度 存储
linux内核 do_fork 函数源代码浅析
前面已经谈了内核加载与系统引导过程,下面我们来看看内核的 do_fork() 函数是如何创建一个新的进程的。 在 Linux 内核中,供用户创建进程的系统调用fork()函数的响应函数是 sys_fork()、sys_clone()、sys_vfork()。
1134 0
|
Java 测试技术 数据库
软件工程 工具之二—— PowerDesigner v12(五)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/1381837 第十章 面向对象模型 7、设计组件图1)组件图(Component Diagram):描述了软件组件以及它们之间的依赖关系。
827 0
|
10天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1217 5
|
9天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1181 87