【问题标题】:Office.js iterate single cells in a single column in a tableOffice.js 在表格的单个列中迭代单个单元格
【发布时间】:2019-07-24 17:46:05
【问题描述】:

作为插件的一部分,我在 Excel 工作表中有一个控制面板,这是在插件启动时构建的。 我想确保我的所有代码引用工作表都是相对引用,因此如果用户将列添加到控制面板或移动它。该插件仍然有效。

例如如果我想阅读信息:

    // This reads a list of tickers to than query my back end for data.
    let BBTickerRange=sheet.tables.getItem("ControlPanel").columns.getItem("Symbol Ticker");
    BBTickerRange.load(["values", "columns", "items"])

     // IF the lookup misses I have code like
                BloombergTableOne.columns.items[i + 1].name = ("#TK" + i + " " + BBTickerRange.values[i][0]);
                BloombergTableOne.columns.getItemAt(i + 1).getHeaderRowRange().format.fill.color = "#DD5D74";
                BloombergTableOne.columns.getItemAt(i + 1).getDataBodyRange().clear();

     // But for Changing a specific value within the control panel I am still using code like
          var SymStartDate = sheet.getRange("D12:D12").getOffsetRange(i, 0);
          var SymEndDate = sheet.getRange("E12:E12").getOffsetRange(i, 0);

我想让它查看工作表中的特定列,而不是遍历行,而不是进行通用引用和偏移。

有没有办法在不写入整个 .getDataBodyRange 的情况下迭代更改列中的单个值

【问题讨论】:

    标签: javascript excel office-js


    【解决方案1】:
    // Potential Solution for anyone looking for a workaround.       
    let SymStartDateCol=  sheet.tables.getItem("ControlPanel").columns.getItem("Start Date").getHeaderRowRange().load(["address"]); 
       //SymStartDateCol.load(["values", "columns", "items", "address"])
    let SymEndDateCol=  sheet.tables.getItem("ControlPanel").columns.getItem("End Date").getHeaderRowRange().load(["address"]);
    

    返回上下文.sync() .then(async (Symbol) => {

    var SymStartDate = sheet.getRange(SymStartDateCol.address).getOffsetRange(i+1, 0);
    var SymEndDate = sheet.getRange(SymEndDateCol.address).getOffsetRange(i+1, 0);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2010-12-26
      • 2010-11-12
      • 1970-01-01
      相关资源
      最近更新 更多