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

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

http://www.kler.cn/a/593518.html

相关文章:

  • Vlan初级实验
  • 一次Milvus迁移的记录
  • 【32】单片机编程核心技巧:Switch驱动按键控制跑马灯方向
  • RabbitMQ 基本原理详解
  • Java 并发集合:ConcurrentHashMap 深入解析
  • html5基于Canvas的经典打砖块游戏开发实践
  • 齿轮热处理学习笔记分享
  • 本地部署deepseek-r1建立向量知识库和知识库检索实践【代码】
  • 多模态大模型:将音频向量化
  • 再学:合约继承 、抽象合约 solidity接口、库、事件 合约重入攻击
  • 快速迭代:利用 nodemon 和其他工具实现 Express.js 热更新
  • Wi-Fi NAN 架构(Wi-Fi Aware Specification v4.0,第2章:2.3~2.6)
  • python|exm5-3re模块,正则表达式概念介绍|match()、search()、findall()、sub()、split()
  • LoRA中黑塞矩阵、Fisher信息矩阵是什么
  • python主成分分析法1
  • python函数的多种参数使用形式
  • vue+echarts实现饼图组件(实现左右联动并且数据量大时可滚动)
  • GenICam标准
  • 【C#语言】C#中的同步与异步编程:原理、示例与最佳实践
  • MySQL 基础学习文档