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

Excel ScriptLab学习笔记

注意

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 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/588668.html

相关文章:

  • 判断是不是二叉搜索树(C++)
  • Selenium 自动化测试学习总结
  • 不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析
  • 【鸿蒙开发】Hi3861学习笔记- GPIO之继电器
  • 时序约束整理
  • 【sklearn 03】逻辑回归、决策树、支持向量机
  • 网页制作16-Javascipt时间特效の设置D-DAY倒计时
  • 【Node.js入门笔记5---fs文件信息与元数据】
  • 项目经历-笔记
  • perl的package中“Subroutine new redefined”问题
  • (六)Spring Boot学习——spring security做基于方法的认证
  • IMX6ULL学习整理篇——UBoot的一些基础知识(1.编译流程)
  • 使用yolov8+flask实现精美登录界面+图片视频摄像头检测系统
  • 电机控制常见面试问题(十一)
  • 【CSS】一、基础选择器
  • 蓝桥杯好题推荐---激光炸弹
  • 【蓝桥杯每日一题】3.16
  • 【Agent】OpenManus 项目架构分析
  • 技术栈分享之----Swagger
  • 专题|Python贝叶斯金融数据应用实例合集:随机波动率SV模型、逻辑回归、参数更新、绩效比较BEST分析亚马逊股票、普尔指数...