Как удалить строки листа на листе в Excel с помощью office.js - PullRequest
0 голосов
/ 30 октября 2018

Моя цель - очистить лист от всех данных.

Я пробовал worksheet.getusedRange (). Clear () метод, но он очищает только данные и формат, но скрытые строки все еще остаются скрытыми. Даже worksheet.getUsedRange (). Delete ('up') не удаляет свойство unhide строк.

Единственный обходной путь, который я нашел, это сделать worksheet.getUsedRange.rowHidden = False , а затем сделать worksheet.getUsedRange (). Delete () , которая будет показывать строки в рабочем диапазон, но он не будет отображать строки за его пределами (то есть, если данные / формат присутствуют вплоть до строки 10, но строка 100 скрыта, тогда этот метод не будет отображать сотую строку)

И когда я пытаюсь worksheet.getRange (). RowHidden = false , тогда выдается ошибка -> "error: InvalidOperation: эта операция недопустима для текущего объекта."

Есть ли способ удаления строк листа, например, в Excel, так что даже скрытое свойство строк также удаляется.

Я использую Excel Online

1 Ответ

0 голосов
/ 13 ноября 2018

Как вы обнаружили, метод getUsedRange возвращает только диапазон ячеек, которые содержат данные или форматирование. Если лист содержит скрытые / пустые строки за пределами диапазона ячеек, который содержит данные / форматирование, эти скрытые / пустые строки не будут включены в диапазон, который возвращает метод getUsedRange.

Чтобы достичь цели очистки листа от всех данных, включая все пустые, но скрытые строки, вы можете подумать о том, чтобы сделать что-то вроде этого:

  1. Используйте метод getRange для получения диапазона, который, как вы уверены, достаточно велик, чтобы охватить любые данные (и / или пустые, скрытые строки) на листе.

  2. Показать все строки в этом диапазоне.

  3. Удалить этот диапазон.

Следующий пример кода иллюстрирует этот подход. Обратите внимание, что он указывает диапазон A1:KK20000 - но вы можете установить для него любое значение, которое, по вашему мнению, достаточно велико, чтобы охватить данные (и / или пустые, скрытые строки) на листе.

await Excel.run(async (context) => {
    const sheet = context.workbook.worksheets.getItem("Sample");
    const range = sheet.getRange('A1:KK20000');
    range.rowHidden = false;
    range.delete(Excel.DeleteShiftDirection.up);
    context.sync();
});

В качестве альтернативы, вы можете использовать API, чтобы удалить лист, а затем сразу же создать новый (пустой) лист с одинаковым именем на его месте ... хотя это может быть более зрительным для пользователя, чем первый подход, который я описано.

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