Excel office-js API - 将值插入空白 sheet
Excel office-js API - Insert values to a blank sheet
如何将值插入空白 sheet?
我目前知道的插入值的方法是检索范围,然后使用 values
属性 插入值,例如
range.getRange("A1:" + cellBottomRight);
range.load("values");
context.sync().then(function () {
range.values = twoDimensionalArrayOfValues;
});
是否有更简单的方法,即使用单个函数来简单地插入值,而不是首先检索范围?
谢谢!
编辑:
我一直在尝试创建一个新的 sheet,然后向其中插入一个二维数组,它的值将从单元格 A1 开始插入。
到目前为止,我设法做到了以下几点:
let neeSheet = context.workbook.worksheets.add("New sheet");
newSheet.activate();
newSheet.getRange("A1").values = twoDimensionalArray;
context.sync();
但是没用。
我怎样才能让它工作?
谢谢!
如果您只想设置值,实际上不必加载范围,因此您可以这样做:
var range = ctx.workbook.worksheets.getItem("Sheet1").getRange("A1");
range.values = [["Value"]];
return ctx.sync();
(添加此答案以响应@avi12 添加到上述问题 "EDIT" 下的新信息)
Philip 上面的回答正确地展示了如何将单个值插入到工作表的单元格 A1 中。为了解决您在(更新的)问题中描述的特定场景,这里有一些代码片段(一个在 TypeScript 中,另一个在 JavaScript 中)展示了如何创建一个新的工作表,然后将数据添加到工作表,使用二维数据数组。这里要指出的关键是,我通过使用 getResizedRange(传入数组的维度)来检索范围,以便范围的大小与数据的大小相匹配设置我正在插入其中。
注意:您可以使用 Script Lab (https://aka.ms/getscriptlab). Simply install the Script Lab add-in (free), then choose "Import" in the navigation menu, and use the following GIST URL: https://gist.github.com/kbrandl/01c4faf352c34286188311c1198f6307.
打字稿:
async function run_TS() {
try {
await Excel.run(async (context) => {
// define values that will be inserted into new sheet
let values = [["A1", "B1", "C1"], ["A2", "B2", "C2"]];
// create and activate new sheet
let sheets = context.workbook.worksheets;
let newSheet = sheets.add("New sheet TS");
newSheet.activate();
// add data to the new sheet
let range = newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1);
range.values = values;
// sync
await context.sync();
console.log("Finished with run_TS function");
});
}
catch (error) {
OfficeHelpers.UI.notify(error);
OfficeHelpers.Utilities.log(error);
}
}
JavaScript:
function run_JS() {
Excel.run(function (context) {
// define values that will be inserted into new sheet
var values = [["A1", "B1", "C1"], ["A2", "B2", "C2"]];
// create and activate new sheet
var sheets = context.workbook.worksheets;
var newSheet = sheets.add("New sheet JS");
newSheet.activate();
// add data to the new sheet
var range = newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1);
range.values = values;
// sync
return context.sync()
.then(function () {
console.log("Finished with run_JS function");
});
})
.catch(function (error) {
OfficeHelpers.UI.notify(error);
OfficeHelpers.Utilities.log(error);
});
}
如何将值插入空白 sheet?
我目前知道的插入值的方法是检索范围,然后使用 values
属性 插入值,例如
range.getRange("A1:" + cellBottomRight);
range.load("values");
context.sync().then(function () {
range.values = twoDimensionalArrayOfValues;
});
是否有更简单的方法,即使用单个函数来简单地插入值,而不是首先检索范围?
谢谢!
编辑:
我一直在尝试创建一个新的 sheet,然后向其中插入一个二维数组,它的值将从单元格 A1 开始插入。
到目前为止,我设法做到了以下几点:
let neeSheet = context.workbook.worksheets.add("New sheet");
newSheet.activate();
newSheet.getRange("A1").values = twoDimensionalArray;
context.sync();
但是没用。
我怎样才能让它工作?
谢谢!
如果您只想设置值,实际上不必加载范围,因此您可以这样做:
var range = ctx.workbook.worksheets.getItem("Sheet1").getRange("A1");
range.values = [["Value"]];
return ctx.sync();
(添加此答案以响应@avi12 添加到上述问题 "EDIT" 下的新信息)
Philip 上面的回答正确地展示了如何将单个值插入到工作表的单元格 A1 中。为了解决您在(更新的)问题中描述的特定场景,这里有一些代码片段(一个在 TypeScript 中,另一个在 JavaScript 中)展示了如何创建一个新的工作表,然后将数据添加到工作表,使用二维数据数组。这里要指出的关键是,我通过使用 getResizedRange(传入数组的维度)来检索范围,以便范围的大小与数据的大小相匹配设置我正在插入其中。
注意:您可以使用 Script Lab (https://aka.ms/getscriptlab). Simply install the Script Lab add-in (free), then choose "Import" in the navigation menu, and use the following GIST URL: https://gist.github.com/kbrandl/01c4faf352c34286188311c1198f6307.
打字稿:
async function run_TS() {
try {
await Excel.run(async (context) => {
// define values that will be inserted into new sheet
let values = [["A1", "B1", "C1"], ["A2", "B2", "C2"]];
// create and activate new sheet
let sheets = context.workbook.worksheets;
let newSheet = sheets.add("New sheet TS");
newSheet.activate();
// add data to the new sheet
let range = newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1);
range.values = values;
// sync
await context.sync();
console.log("Finished with run_TS function");
});
}
catch (error) {
OfficeHelpers.UI.notify(error);
OfficeHelpers.Utilities.log(error);
}
}
JavaScript:
function run_JS() {
Excel.run(function (context) {
// define values that will be inserted into new sheet
var values = [["A1", "B1", "C1"], ["A2", "B2", "C2"]];
// create and activate new sheet
var sheets = context.workbook.worksheets;
var newSheet = sheets.add("New sheet JS");
newSheet.activate();
// add data to the new sheet
var range = newSheet.getRange("A1").getResizedRange(values.length - 1, values[0].length - 1);
range.values = values;
// sync
return context.sync()
.then(function () {
console.log("Finished with run_JS function");
});
})
.catch(function (error) {
OfficeHelpers.UI.notify(error);
OfficeHelpers.Utilities.log(error);
});
}