Как удалить все строки в таблице с помощью скриптов Office - PullRequest
0 голосов
/ 04 августа 2020

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

// Get the row count
let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();

// Delete all the rows
table.deleteRowsAt(0,rowCount);

Проблема в том, что rowCount вернет 1, даже если таблица пуста. Когда deleteRowsAt пытается удалить строку в пустой таблице, он возвращает ошибку.

В VBA мы можем использовать table.ListRows.Count, и это вернет 0, если таблица пуста.

Пример : У меня в таблице 3 строки enter image description here

If I select all the rows and delete them from the Table I get this: введите описание изображения здесь

В этой таблице теперь нет строк, но у меня нет возможности получить этот результат. Как я уже сказал, в VBA мы будем использовать table.ListRows.Count, и это вернет 0, но я не могу найти эквивалент для сценариев Office.

1 Ответ

1 голос
/ 04 августа 2020

ОБНОВЛЕНИЕ:

Теперь у нас есть getRowCount API в таблице, которую вы можете использовать для решения этого сценария. Он вернет фактические строки (не считая строки заголовка или раскрытия).

    // Assuming there's a table in the workbook named Table1
    let rowCount = workbook.getTable('Table1').getRowCount(); // Table1
    // Assuming there's a table in the workbook
    let rowCount = workbook.getTables()[0].getRowCount(); // First table

====

СТАРЫЙ ОТВЕТ

Я думаю, что нам не хватает API, который предоставит количество строк. Мы добавим это в очередь. Обходной путь -

function main(workbook: ExcelScript.Workbook) {
  let table = workbook.getTable("Table26");
  let rowCount = table.getRangeBetweenHeaderAndTotal().getRowCount();
  try { 
    table.deleteRowsAt(0, rowCount);
  } catch (e) {
    if (rowCount === 1 && e.code === 'InvalidArgument') {
       console.log("This error means there's no row to delete.")
    }
  }
}

Если количество строк равно 1, а код ошибки - это конкретный c код, который возвращается, когда мы удаляем 'insert-row', тогда мы можем игнорировать ошибку. Опять же, лучшим подходом было бы использовать API для объекта таблицы, чтобы получить количество строк и удалить строки только тогда, когда количество строк> = 1. Мы продолжим исследование, чтобы улучшить работу.

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