Как вы обнаружили, метод getUsedRange
возвращает только диапазон ячеек, которые содержат данные или форматирование. Если лист содержит скрытые / пустые строки за пределами диапазона ячеек, который содержит данные / форматирование, эти скрытые / пустые строки не будут включены в диапазон, который возвращает метод getUsedRange
.
Чтобы достичь цели очистки листа от всех данных, включая все пустые, но скрытые строки, вы можете подумать о том, чтобы сделать что-то вроде этого:
Используйте метод getRange
для получения диапазона, который, как вы уверены, достаточно велик, чтобы охватить любые данные (и / или пустые, скрытые строки) на листе.
Показать все строки в этом диапазоне.
Удалить этот диапазон.
Следующий пример кода иллюстрирует этот подход. Обратите внимание, что он указывает диапазон 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, чтобы удалить лист, а затем сразу же создать новый (пустой) лист с одинаковым именем на его месте ... хотя это может быть более зрительным для пользователя, чем первый подход, который я описано.