Найти доступный диапазон в Excel в JS API - PullRequest
0 голосов
/ 01 июня 2018

У меня есть требование в моем дополнении, где мне нужно вставить таблицу в Excel.Но мне нужно знать, пуст ли доступный диапазон ячеек для моей таблицы, чтобы вставить туда.Поэтому я должен проверить, что если мой курсор находится на A1, есть ли у нас доступное пространство от A1 до A15, и там нет никаких существующих данных.

Я пробовал функцию getRangeByIndexes (), но это просто дает диапазон.Я не могу найти функцию, которая возвращает логическое значение для моего требования.

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Есть несколько способов сделать это.Я думаю, что лучше всего использовать комбинацию 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 (https://aka.ms/getscriptlab). Просто установите надстройку Script Lab (бесплатно), затем выберите «Импорт» в навигационном меню и используйте следующий URL-адрес GIST: https://gist.github.com/Zlatkovsky/4835778375bb5f5b9d49bff4f5d522f0. См. дополнительную информацию об импорте фрагментов в ScriptЛабораторная работа .

Объекты, возвращаемые с помощью *OrNullObject -финансируемых методов, немного необычны. Если вы не сталкивались с ними раньше, я рекомендую прочитать об этом в наших документах . Я также подробно расскажу об этом в своей книге " Создание надстроек Office с использованием Office.js " (со всеми доходами до благотворительность ) в главе под названием "9. Проверка существования объекта ".

0 голосов
/ 01 июня 2018

В Excel всегда будет «пробел» для вставки данных / таблицы.Я думаю, вы хотите убедиться, что ячейки на самом деле пустые, прежде чем вставлять таблицу?Если это так, вы можете получить getSelectedRange () API и использовать getOffsetRange () , чтобы выбрать как выбранный диапазон (загрузить только адрес и значения), так и размер таблицы, связанный с диапазоном (загрузить толькоценности).Затем вы можете проверить, чтобы убедиться, что значения пустые перед вставкой.Другим способом может быть проверка worksheet.getUsedRange(), чтобы убедиться, что используемый диапазон - это просто A1 (пустой лист).Это работает, только если вы гарантируете, что весь рабочий лист пуст (а не только адрес таблицы).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...