Office Script中如何将列数组转置为行并写入Excel A1:D1区域?
问题解决:转换数组格式适配Office Script写入行区域
错误原因
目标区域A1:D1是1行4列,要求传入的数组格式为[[1,2,3,4]](二维数组,外层代表行,内层代表列)。但当前传入的incomingData实际格式为[["[[1],[2],[3],[4]]"]],是嵌套了JSON字符串的二维数组,既不匹配行数也不匹配列数,因此触发维度不匹配的报错。
解决方案步骤
- 提取嵌套在数组中的JSON字符串
- 将字符串解析为原始列数组
[[1],[2],[3],[4]] - 将列数组扁平化转为一维数组,再包裹成符合行区域要求的二维数组结构
- 修正原代码中的变量名错误(定义了
sheet却误用ws)
修正后的完整代码
function main(workbook: ExcelScript.Workbook, incomingData: string[][]) { // 获取目标工作表 let sheet = workbook.getWorksheet("Sheet1"); // 定义目标行区域 let destinationRange = sheet.getRange("A1:D1"); // 提取嵌套的JSON字符串 const jsonStr = incomingData[0][0]; // 解析字符串为二维列数组 const columnArray = JSON.parse(jsonStr); // 扁平化列数组并转为行格式的二维数组 const rowArray = [columnArray.flat()]; // 将转换后的数组写入目标区域 destinationRange.setValues(rowArray); }
关键代码说明
JSON.parse(jsonStr):把字符串形式的数组转换为可操作的JavaScript数组columnArray.flat():将二维列数组[[1],[2],[3],[4]]扁平化,得到一维数组[1,2,3,4]- 用
[]包裹扁平化后的数组,生成符合行区域要求的二维数组[[1,2,3,4]],确保与目标区域的1行4列维度完全匹配
内容的提问来源于stack exchange,提问作者stackyMike
相关产品推荐
相关产品推荐

