我正在尝试使用Office.js API来构建Angular Excel加载项,但我在将Excel.Range转换为Excel.Table时遇到问题。
我有一个类似下面示例的代码绑定到按钮单击,但是虽然我设法在Excel工作表中获取documentLines,但是没有创建表。
getExampleTable() {
const documentLinesHeader = [["Period 1", "Period 2", "Period 3"]];
const documentLines = [
["Line 1.1", "Line 1.2", "Line 1.3"],
["Line 2.1", "Line 2.2", "Line 2.3"],
["Line 3.1", "Line 3.2", "Line 3.3"],
];
const documentLinesCount = documentLines.length;
const columnCount = documentLines[0].length;
Excel.run(async (ctx) => {
let sheet = ctx.workbook.worksheets.getActiveWorksheet();
let cell = sheet.getCell(0,0);
let tableRange = cell.getResizedRange(documentLinesCount - 1, columnCount - 1);
tableRange.load("address");
await ctx.sync();
console.log("Table Range is:", tableRange.address);
// Outputs Table Range is: Sheet1!A1:C3
tableRange.values = documentLines;
let exampleTable = sheet.tables.add(tableRange, true);
exampleTable.getHeaderRowRange().values = documentLinesHeader;
exampleTable.name = "ExampleTable";
return await ctx.sync();
})
.catch(this.errorHandler);
}
如果我查看控制台,我会收到错误:
Debug info: {"code":"InvalidArgument","message":"The argument is invalid or
missing or has an incorrect format.","errorLocation":"TableCollection.add"}
我的办公室版本是: 16.0.4639.1000
答案 0 :(得分:2)
我无法重现您所描述的问题。根据文档,numpy.diag(i)
is part of requirement set 1.1和your version of Office does support that requirement set。
以下函数(函数的某种简化/简化版本)成功地使用数据填充范围,然后从该范围创建表。
TableCollection.add
您可以使用脚本实验室(https://aka.ms/getscriptlab)自行尝试此代码段。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下Gist URL:https://gist.github.com/kbrandl/fcb894084eb764098156965aeefb5bf2。
答案 1 :(得分:2)
所以,我发现我的Office版本存在某种问题,导致无法添加" TableCollection的Range对象。虽然文档明确指出参数可以是"范围对象,或表示数据源的范围的字符串地址或名称。"
此问题的解决方法是加载Range的地址,并将其传递给add方法。使用上面的代码片段,您必须加载地址,然后传递范围地址,而不是传递Range对象,如下所示:
let exampleTable = sheet.tables.add(tableRange.address, true);