我无法在活动工作表中获取表名。我有一个下拉列表,其中将填充工作簿中的工作表。我有另一个下拉列表,应该在选定的工作表中获取所有列名称(标题)。不知何故,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。
任何线索我在这里做错了什么?
答案 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上面的评论是正确的。在您链接到的文件中,没有表对象 - 尽管工作表确实包含多行/多列数据,但该数据未明确包含在表中强>
您是否可以手动操作此文件?如果是,则可以通过执行以下操作为数据创建表对象:
如果您无法手动操作此文件,则可以使用Office JavaScript API创建表格(来自工作表中的数据范围),如下所述:https://dev.office.com/docs/add-ins/excel/excel-add-ins-tables#convert-a-range-to-a-table。