Документация 0.4 Справочник действий

Записать диапазон

excel.writeRange · Excel

Записывает массив объектов или массив массивов на лист; создаёт файл и лист, если их нет

Записывает на лист сразу много строк: результат обработки, выгрузку записей отчёта, отфильтрованную таблицу. Быстрее, чем записывать ячейки по одной.

Свойства #

Свойство Имя в файле Значение Обязательное По умолчанию Описание
Путь к файлу path путь к файлу да —
Лист sheet текст нет — Пусто — первый лист; если листа нет, он будет создан
Начальная ячейка startCell текст нет A1
Данные data выражение да — Массив объектов (ключи — заголовки), напр. rows, или массив массивов: [[1, 'a'], [2, 'b']]
Записать заголовки writeHeaders да/нет нет да Для массива объектов: первой строкой записать ключи

Результат #

Действие не возвращает значений.

Как работает #

  • Путь к файлу (path) — книга .xlsx (или .xlsm); относительный путь считается от папки процесса. Старый формат .xls не поддерживается — сохраните книгу в Excel как .xlsx. Excel на компьютере робота не нужен.
  • Лист (sheet) — имя листа; пусто — первый лист. Листа нет — он создаётся (имя до 31 символа, без : \ / ? * [ ]).
  • Начальная ячейка (startCell, по умолчанию A1) — левый верхний угол записи.
  • Данные (data) — выражение:
    • список объектов (rows, paid.map(r => r.values)) — колонки по ключам объектов, в порядке их первого появления;
    • список списков ([[1, 'a'], [2, 'b']]) — строки как есть. Смешивать объекты и списки нельзя.
  • Записать заголовки (writeHeaders, включено) — для списка объектов первой строкой записать ключи.
  • Числа и да/нет сохраняют тип, null — пустая ячейка, текст — текст.
  • Книга сохраняется через временный файл рядом: если запись прервалась (нет места, отключилась сетевая папка), исходный файл остаётся целым. Файла нет — он создаётся.

Ошибки #

Код Причина и что делать
FileLocked Книга открыта в Excel или другой программе — закройте её. Запись идёт в исключительном режиме, чтобы не испортить файл
InvalidArgument Файл не .xlsx, повреждён или это не книга Excel; недопустимое имя листа; нет прав на запись
InvalidArgument Элемент данных — не объект и не список; объекты и списки вперемешку; некорректная начальная ячейка; данные выходят за пределы листа
ExpressionError Выражение данных дало не список

Пример #

{
  "type": "excel.writeRange",
  "props": { "path": "out/неоплаченные.xlsx", "sheet": "Список", "startCell": "A1", "data": "unpaid", "writeHeaders": true }
}