在JS API中的Excel中查找可用范围

在JS API中的Excel中查找可用范围,excel,office-js,Excel,Office Js,我的外接程序中有一个要求,需要在Excel中插入一个表。但是我需要知道可用的单元格范围是否为空,以便我的表插入其中。所以我必须检查,如果我的光标在A1,我们是否有从A1到A15的可用空间,并且那里没有现有的数据 我尝试了getRangeByIndexes()函数,但这只是给出了一个范围。我找不到为我的要求返回布尔值的函数。Excel将始终有“空间”来插入数据/表格。我想在插入表之前,您想确认单元格实际上是空的吗?如果是这样,您可以获取API并使用它来选择所选范围(仅加载地址和值)和与范围关联的表

我的外接程序中有一个要求,需要在Excel中插入一个表。但是我需要知道可用的单元格范围是否为空,以便我的表插入其中。所以我必须检查,如果我的光标在A1,我们是否有从A1到A15的可用空间,并且那里没有现有的数据

我尝试了getRangeByIndexes()函数,但这只是给出了一个范围。我找不到为我的要求返回布尔值的函数。

Excel将始终有“空间”来插入数据/表格。我想在插入表之前,您想确认单元格实际上是空的吗?如果是这样,您可以获取API并使用它来选择所选范围(仅加载地址和值)和与范围关联的表维度(仅加载值)。然后,可以在插入之前检查以确保值为空。
另一种方法是检查
工作表.getUsedRange()
,以确保使用的范围仅为A1(空工作表)。只有在确保整个工作表为空(而不仅仅是表地址)的情况下,此操作才有效

有很多方法可以做到这一点。我认为最好的方法是结合使用
getSelectedRange
getAbsoluteResizedRange
,和
getUsedRangeOrNullObject

await Excel.run(async (context) => {
    let numRows = 10;
    let numColumns = 3;
    let range = context.workbook.getSelectedRange().getCell(0, 0).getAbsoluteResizedRange(numRows, numColumns);
    let usedRange = range.getUsedRangeOrNullObject(true /*valuesOnly*/);
    await context.sync();
    if (usedRange.isNullObject) {
        console.log("The range is empty");
    } else {
        console.log("Sorry, it's already taken")
    }
});
您可以在新的脚本实验室()中,通过单击五下鼠标来尝试这个片段。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下要点URL:。看

*OrNullObject
-后缀方法返回的对象有点不寻常。如果你以前没有遇到过他们,我建议你读一读。我也在我的书中,在题为“9.检查物体是否存在”的一章中,详细阐述了这一点