代码之家  ›  专栏  ›  技术社区  ›  Kero

是否从当前工作表的范围中获取行?

  •  1
  • Kero  · 技术社区  · 8 年前

    我无法在活动工作表中获取表名。我有一个下拉列表,其中将填充工作簿中的工作表。我有另一个下拉列表,可以获得选定工作表中的所有列名称(标题)。不知怎么的范围。地址为“sheet1!2:2”。

    以下是我使用的代码:

    function getRow(worksheetName) {
        Excel.run(function (ctx) {
                // Queue a command to write the sample data to the worksheet
                // at moment i have only one worksheet named "Sheet1"
    
                var range = ctx.workbook.worksheets.getItem(worksheetName).getRange().getRow(1);
                range.load('address');
                // Run the queued-up commands, and return a promise to indicate task 
                //completion
                return ctx.sync().then(function () {
                    console.log(range.address); // prints Sheet1!2:2
                })
            })
            .catch(errorHandler);
    }
    

    这是一个 link to spreadsheet 我用来测试的。

    知道我做错了什么吗?

    2 回复  |  直到 8 年前
        1
  •  1
  •   Kim Brandl    8 年前

    我建议你更换 getRange() 具有 getUsedRange() 相反,如下所示:

    function getRow(worksheetName) {
        Excel.run(function (ctx) {
                var range = ctx.workbook.worksheets.getItem(worksheetName).getUsedRange().getRow(1);
                range.load('address');
    
                return ctx.sync().then(function () {
                    console.log(range.address); 
                })
            })
            .catch(errorHandler);
    }
    
        2
  •  0
  •   Kim Brandl    8 年前

    Rick Kirkham的上述评论是正确的。在您链接到的文件中,没有 桌子 对象--尽管工作表确实包含多行/列数据,但该数据并没有显式包含在 桌子 .

    您能够手动操作此文件吗?如果是,则可以通过执行以下操作为数据创建表对象:

    1. 选择要在表中的数据。
    2. 选中该数据后,选择 桌子 按钮(位于
    3. 验证中的输入 提示并选择 好啊

    如果无法手动操作此文件,则可以使用Office JavaScript API创建表(从工作表中的数据范围),如下所述: https://dev.office.com/docs/add-ins/excel/excel-add-ins-tables#convert-a-range-to-a-table .

    推荐文章