javascript - 对于每个单元格循环 - Excel JavaScript API

标签 javascript excel office-js office-addins

enter image description here

在下面的 VBA 代码中,我 debug.print 每个单元格值。使用图片中的数据,我的答案是这样的。

Sub loopAndDebugPrintEachCell()
Dim cl As Object
With Sheets("Sheet1")
    For Each cl In .Range("A1:D2")
        Debug.Print cl.Value
    Next cl
End With
End Sub

enter image description here

我试图在 JavaScript 中重申这段代码,我想出了一个解决方案,但我不确定这是最有效的方法。我得到了完全相同的答案,但是有没有更有利的方式来循环遍历一个范围?
  loopAndConsoleLogEachCell = async () => {
    try {
      await Excel.run(async context => {
        const range = context.workbook.worksheets.getItem("Sheet1").getRange("A1:D2");
        range.load(["columnCount", "rowCount"]);
        await context.sync();
        let i = 0;
        let rowC = 0;
        do {
          let loopRng = range.getAbsoluteResizedRange(1, 1).getOffsetRange(rowC, i).load(["values"]);
          await context.sync();
          console.log(`${loopRng.values} `);
          let rangeColCount = Math.floor(((range.columnCount) / 2) + 1);
          if (rowC < (range.rowCount) && i == (rangeColCount)) {
            rowC++;
            i = 0;
          } else {
            i++;
          }
        }
        while (rowC < range.rowCount && i < range.columnCount);
      });
    } catch (error) {
      console.error(error);
    }
  };

最佳答案

如果要打印范围内每个单元格的值,可以使用 range.values API

这是获取范围值的示例代码

  await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getItem("Sample");
    const range = sheet.getRange("B2:E6");
    range.load("text");
    range.load("values");

    await context.sync();
    console.log(range.values);
    //console.log(JSON.stringify(range.text, null, 4));
  });

文档可以找到https://docs.microsoft.com/en-us/javascript/api/excel/excel.range?view=excel-js-preview#values

关于javascript - 对于每个单元格循环 - Excel JavaScript API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370298/

相关文章:

javascript - 向 Office 加载项发送请求

javascript - Chrome 扩展程序中的历史搜索无法执行

javascript - 在另一个数组中使用 array.push 会产生 undefined

javascript - ReactFire 未从实时数据库加载数据

c# - 在 C# UWP Windows 10 应用程序中读取和写入 Excel 工作表

office-addins - Office JS Api - 权限被拒绝问题

javascript - 功能检测自动播放 HTML5 音频 - 移动浏览器上的音频

VBA - 具有命名范围内的值的组合框

vba - Excel VBA Exit For 在 If block 内不起作用

office-addins - Office.EventType.DocumentSelectionChanged(在 Excel 中)不适用于所有 Web 浏览器