Excel-ScriptLab学习笔记
Excel ScriptLab学习笔记
注意
The Excel JavaScript API 没有“Cell”对象或类。 相反,Excel JavaScript API 将所有 Excel 单元格定义为 Range 对象。 Excel UI 中的单个单元格转换为 Excel JavaScript API 中包含一个单元格的 Range 对象。 单个 Range 对象也可以包含多个连续的单元格。 若要了解详细信息,请参阅[使用 Excel JavaScript API 处理单元格]( ins-cells)。
官方文档
这里是针对Excel JavaScript API
的帮助文档的开头,其下一级子目录如下图,包含了常用功能的说明
建议直接点击该连接,查看官方文档,内容都是中文,且有示例,通俗易懂 。
本笔记下面的内容只会对官方文档做连接和摘抄,没有额外内容
使用 Excel JavaScript API 设置和获取范围值、文本或公式
简单总结下
获得某个、某些连续的单元格的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 工作表函数
模板
代码模板
下面是打开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);
}
}
Run // 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 @types/office-js /dist/css/fabric.min.css /dist/css/fabric.components.min.css /client/core.min.js @types/core-js @types/jquery@3.3.1