首页 > 解决方案 > 在 Excel JS 表格中使用 getCell() 设置单元格值

问题描述

我被困在这个问题上,在任何网站上都找不到答案。我正在尝试设置单元格的值,但出现以下错误:

未加载属性“值”。请调用 load 方法和 context.sync() ...

我确实知道我需要调用 load 方法,但是我尝试过的所有负载都不起作用。

    Excel.run(function (context) {
       var sheet = context.workbook.worksheets.getActiveWorksheet();
       var FilledTable = sheet.tables.getItem(randomId);
       FilledTable.rows.load("items"); //Tried this and many others...
       FilledTable.getDataBodyRange().load("values");

       return context.sync().then(function () {
          FilledTable.getRange().getCell(1,0).values = [[ "test" ]]; //Trying to do this! 
       });
    }

感谢您的任何帮助 !!

更新

我正在尝试循环表的第一列并使用已设置的值设置超链接。

示例:完整示例

    Excel.run(function (context) {
      var sheet = context.workbook.worksheets.getActiveWorksheet();
      var filledTable = sheet.tables.getItem(randomId);
      var usedRange = filledTable.getRange().load("values, rowCount");

      return context.sync().then(function () {
         var keyPos = headers.indexOf("Key");
         if(keyPos > -1){
            for(var z = 1; z < usedRange.rowCount; z++){
               usedRange.values[z][0].hyperlink = {
                  address: `url` + usedRange.values[z][0],
                  documentReference: null,
                  screenTip: null,
                  textToDisplay: usedRange.values[z][0],
                };
              }
           }
         });
       })

标签: office-jsexceljs

解决方案


我能够通过使用 getRow 和 getColumn 而不是值来解决我的问题!这是固定代码:

Excel.run(function (context) {
  var sheet = context.workbook.worksheets.getActiveWorksheet();
  var filledTable = sheet.tables.getItem(randomId);
  var usedRange = filledTable.getRange().load("values, rowCount");

  return context.sync().then(function () {
    var keyPos = headers.indexOf("Key");
    if(keyPos > -1){
      for(var z = 1; z < usedRange.rowCount; z++){
        usedRange.getRow(z).getColumn(keyPos).hyperlink = {
          address: `url` + usedRange.values[z][keyPos],
          documentReference: null,
          screenTip: null,
          textToDisplay: usedRange.values[z][keyPos],
        };
      }
    }
  });
})

推荐阅读