【问题标题】:Is there a way to iterate through a range in using the excel javascript api?有没有办法遍历使用 excel javascript api 的范围?
【发布时间】:2022-01-01 14:51:23
【问题描述】:

有没有办法在使用 excel javascript api 时遍历一个范围?我有两列和两行数据。在每一行中,如果一列中有数据,另一列不应该。另一列应为 0 或 null。我想突出显示两列都有数据的行。我添加了我想要实现的图像。

【问题讨论】:

    标签: javascript excel office-js


    【解决方案1】:

    如果您根据需要进行清理,您应该能够做您需要做的事情。

    const sheet = context.workbook.worksheets.getActiveWorksheet();    
    
    let dataRange = sheet.getRange("A1:B10").load(["rowCount", "values"]);
    await context.sync();
    
    for (var row = 0; row < dataRange.rowCount; row++) {
      let column1 = dataRange.values[row][0];
      let column2 = dataRange.values[row][1];
    
      dataRange.getRow(row).format.fill.clear();
    
      if (column1 !== "" && column2 !== "")
        dataRange.getRow(row).format.fill.color = "Red";
    }
    
    await context.sync();
    

    【讨论】:

    • 您应该显式加载 rowCount 属性,而不仅仅是调用 load 方法。不建议在没有参数的情况下调用 load,因为它会导致性能下降。你可以在这里阅读更多:docs.microsoft.com/en-us/office/dev/add-ins/develop/…
    • 是的,我就是这么做的。谢谢。
    • @BrianGonzalez,我只是为你改变了它。 :-)
    • ``` return context.sync().then(function () {...} ``` 我见过一些例子,而不是在 context.sync() 上使用 await 来加载函数,然后有些用。我一直在阅读 javascript,发现使用 then 不是处理异步代码的现代方法。我的理解正确吗?
    • @jalwan 你是对的。 Async/await 是一种更现代的方法,它导致代码更简单。但是,当我有许多独立的任务要同时完成时,我仍然发现常规的 Promise 表示法 (.then()) 很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2016-01-16
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多