如何用Excel Script将对象数组数据输出到Excel单元格A1-C3?
问题描述
尝试使用Excel Script脚本将指定值录入Excel的A1至C3单元格,所用脚本如下:
function main(workbook: ExcelScript.Workbook, jsonData?: fluxos[]) { if (jsonData == undefined || jsonData == null) { console.log("jsonData empty. Using dummy data."); jsonData = dummyData; }; let ws = workbook.getActiveWorksheet(); ws.getRange("A1").setValues(jsonData); }; /*----------------------- Object Interface ---------------------------*/ interface fluxos { Fluxo1: string, Fluxo2: string, Fluxo3: string } /*----------------------- Dummy Data ---------------------------*/ const dummyData: fluxos[] = [ { Fluxo1: "Atividades operacionais", Fluxo2: "Recebimentos de clientes", Fluxo3: "Cliente A" }, { Fluxo1: "Atividades operacionais", Fluxo2: "Recebimentos de clientes", Fluxo3: "Cliente B" }, { Fluxo1: "Atividades operacionais", Fluxo2: "Pagamentos a fornecedores", Fluxo3: "Fornecedor A" } ];
问题出在代码行:
ws.getRange("A1").setValues(jsonData);
需要解决如何将jsonData对象数组的值输出到单元格中。
解决方案
setValues方法要求传入二维数组(string[][]/number[][]),而非对象数组。需先将对象数组转换为符合要求的二维数组,再写入单元格。修改后的代码如下:
function main(workbook: ExcelScript.Workbook, jsonData?: fluxos[]) { if (jsonData == undefined || jsonData == null) { console.log("jsonData empty. Using dummy data."); jsonData = dummyData; }; let ws = workbook.getActiveWorksheet(); // 将对象数组转换为二维数组 const valuesArray = jsonData.map(item => [item.Fluxo1, item.Fluxo2, item.Fluxo3]); // 定位目标范围并设置值 ws.getRange("A1:C3").setValues(valuesArray); }; /*----------------------- Object Interface ---------------------------*/ interface fluxos { Fluxo1: string, Fluxo2: string, Fluxo3: string } /*----------------------- Dummy Data ---------------------------*/ const dummyData: fluxos[] = [ { Fluxo1: "Atividades operacionais", Fluxo2: "Recebimentos de clientes", Fluxo3: "Cliente A" }, { Fluxo1: "Atividades operacionais", Fluxo2: "Recebimentos de clientes", Fluxo3: "Cliente B" }, { Fluxo1: "Atividades operacionais", Fluxo2: "Pagamentos a fornecedores", Fluxo3: "Fornecedor A" } ];
关键修改说明
- 转换数据结构:用
map遍历对象数组,提取每个对象的Fluxo1、Fluxo2、Fluxo3值组成子数组,最终得到[["值1","值2","值3"], ["值4","值5","值6"], ...]的二维数组格式。 - 指定准确范围:直接使用
A1:C3定位目标区域,确保范围大小和二维数组的行列数(3行3列)匹配,避免仅写A1导致数据无法正确填充。
内容的提问来源于stack exchange,提问作者user15235239
相关产品推荐
相关产品推荐

