当前位置: 首页 > news >正文

Excel Script Lab学习笔记

注意

The Excel JavaScript API 没有“Cell”对象或类。 相反,Excel JavaScript API 将所有 Excel 单元格定义为 Range 对象。 Excel UI 中的单个单元格转换为 Excel JavaScript API 中包含一个单元格的 Range 对象。 单个 Range 对象也可以包含多个连续的单元格。 若要了解详细信息,请参阅使用 Excel JavaScript API 处理单元格。

官方文档

这里是针对Excel JavaScript API的帮助文档的开头,包含了常用功能的说明
建议直接点击该连接,查看官方文档,内容都是中文,且有示例,通俗易懂

https://learn.microsoft.com/zh-cn/office/dev/add-ins/reference/overview/excel-add-ins-reference-overview

在这里插入图片描述
也可以直接在Excel中点击Script Lab页签中的“帮助”按钮,也可以跳到官方文档页面
在这里插入图片描述

在这里插入图片描述

本笔记下面的内容只会对官方文档做连接和摘抄,没有额外内容

使用 Excel JavaScript API 设置和获取范围值、文本或公式

https://learn.microsoft.com/zh-cn/office/dev/add-ins/excel/excel-add-ins-ranges-set-get-values

简单总结下

获得某个、某些连续的单元格的range对象

let range = sheet.getRange("MyRange");

读取值
需要先调用load(prop)方法,用于加载对应的内容,所传的prop参数有三种:
// values如果单元格里面是公式,则可能拿不到值;text:取得与表格中展示出来的内容,没公式的是原值,有公式的就是公式得到的值; formulas:没公式的就是原值,有公式的就是公式

// 先调用方法,显式加载相应的值
range.load("values");
// 与excel通信,获取实际的值,该语句必须执行,否则对应的属性上可能会没有值
await context.sync();
// 此时即可以使用相应的数据了
console.log(JSON.stringify(range.values, null, 4));

// 设置值,由于是个区域对象,会包含多行多列的数据,因此需要提供一个二维数组。一层数组中的每个对象表示一行数据,二层数组中的每个数据为该行、该列,即具体单元格的值。

// 设置单值
let range = sheet.getRange("C3");
range.values = [[ 5 ]];
range.format.autofitColumns();
// 生效到excel中
await context.sync();

// 添加公式
let data = [
    ["=C3 * D3"],
    ["=C4 * D4"],
    ["=C5 * D5"],
    ["=SUM(E3:E5)"]
];
let range = sheet.getRange("E3:E6");
range.formulas = data;
await context.sync();

调用内置 Excel 工作表函数

https://learn.microsoft.com/zh-cn/office/dev/add-ins/excel/excel-add-ins-worksheet-functions

模板

代码模板

下面是打开ScriptLab就可以看到的代码内容

// Script
$("#run").on("click", () => tryCatch(run));

async function run() {
  await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getActiveWorksheet();
	// 可以在这里写用来操作excel数据的代码
    
    // 如果代码中有需要向excel中写入的数据,则这句必需要执行
    await context.sync();
  });
}

/** Default helper for invoking an action and handling errors. */
async function tryCatch(callback) {
  try {
    await callback();
  } catch (error) {
    // Note: In a production add-in, you'd want to notify the user through your add-in's UI.
    console.error(error);
  }
}
<!-- HTML -->
<button id="run" class="ms-Button">
    <span class="ms-Button-label">Run</span>
</button>
// css
section.samples {
    margin-top: 20px;
}

section.samples .ms-Button, section.setup .ms-Button {
    display: block;
    margin-bottom: 5px;
    margin-left: 20px;
    min-width: 80px;
}
// Libraries
https://appsforoffice.microsoft.com/lib/1/hosted/office.js
@types/office-js

office-ui-fabric-core@11.1.0/dist/css/fabric.min.css
office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css

core-js@2.4.1/client/core.min.js
@types/core-js

jquery@3.1.1
@types/jquery@3.3.1

相关文章:

  • Pytorch使用手册(专题五十)—自定义运算符
  • 《Python深度学习》第三讲:神经网络
  • sqlite mmap
  • nginx配置反向代理数据库等插件的原理和方式
  • Java线程6种状态的详细说明、状态转换关系(UML展示)
  • 汽车安全确认等级-中国等保
  • springboot基于session实现登录
  • 深入解析过滤器模式(Filter Pattern):一种灵活高效的设计模式
  • 让vscode远程开发也可以图形显示
  • 基于BClinux8部署Ceph 19.2(squid)集群
  • Coco AI 智能检索 Hugo Blog 集成指南
  • 我的python学习记录
  • 【蓝桥杯】省赛:分糖果(思维/模拟)
  • Kotlin 基础语法
  • C# 语法糖
  • Docker build 会在本地产生巨大的文件
  • 计算机视觉技术探索:美颜SDK如何利用深度学习优化美颜、滤镜功能?
  • 如何选择合适的SSL服务器证书
  • 深入理解 Vue.js 中的 <keep-alive>:使用技巧与注意事项
  • c#:使用Modbus RTU协议
  • 网页网站制作维护/50个市场营销经典案例
  • 做网站学不需要做后台管理系统/深圳网站建设的公司
  • windows wordpress伪静态/seo优化工作内容
  • 河北青山建设集团有限公司网站/互联网广告平台排名
  • 在那里做网站/客户管理系统
  • 如何办理医药网站icp备安的前置审批/最基本的网站设计