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

时间:2017-10-25 20:44:09

标签: excel office-js

我无法在活动工作表中获取表名。我有一个下拉列表,其中将填充工作簿中的工作表。我有另一个下拉列表,应该在选定的工作表中获取所有列名称(标题)。不知何故,range.address有" 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 个答案:

答案 0 :(得分:1)

我建议您将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);
}

答案 1 :(得分:0)

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

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

  1. 选择要包含在表格中的数据。
  2. 选择该数据后,选择按钮(在插入标签上)。
  3. 验证创建表格提示中的输入,然后选择确定
  4. 如果您无法手动操作此文件,则可以使用Office JavaScript API创建表格(来自工作表中的数据范围),如下所述:https://dev.office.com/docs/add-ins/excel/excel-add-ins-tables#convert-a-range-to-a-table