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

时间:2018-06-01 09:53:40

标签: excel office-js

我在添加中需要在Excel中插入表格。但我需要知道我的表插入那里的可用单元格范围是否为空。所以我必须检查一下,如果我的光标位于A1,我们是否有从A1到A15的可用空间,那里没有现有数据。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

有很多方法可以做到这一点。我认为最好的方法是使用getSelectedRangegetAbsoluteResizedRangegetUsedRangeOrNullObject

的组合
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")
    }
});

您可以在新的脚本实验室(https://aka.ms/getscriptlab)中点击五次点击直播。只需安装Script Lab加载项(免费),然后在导航菜单中选择“导入”,并使用以下GIST URL:https://gist.github.com/Zlatkovsky/4835778375bb5f5b9d49bff4f5d522f0。请参阅more info about importing snippets to Script Lab

*OrNullObject返回的对象 - 足够的方法有点不寻常。如果你之前没有遇到过它们,我建议你阅读它in our docs。我还在我的书“Building Office Add-ins using Office.js”(所有利润为charity)中,在题为“9.检查对象是否存在”的章节中详细介绍了它。