Все ноды/Data/DataFrame I/O
Записать XLSX
Записывает DataFrame в Excel-файл (xlsx) в файловом хранилище пространства (или подключённом). Перезаписывает целевой файл при существовании.
Тип в графе: df_write_xlsx
Exec
Можно включить выход ошибки и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий сценарий
- Исполнение + данные
Запускается сразу
Как применять
Сохраняет таблицу книгой Excel. Механика хранилища и пути та же, что у Записать CSV; разница в получателе файла.
XLSX берут, когда файл откроет человек: числа и даты остаются числами и датами, а вопросов кодировки и разделителя не возникает вовсе — их в формате нет. CSV остаётся выгоднее, когда файл читает другая система или он очень большой: xlsx тяжелее и собирается дольше.
Как это работает
Порт «Таблица» приносит и запуск, и данные — отдельного входа выполнения нет. Как и у CSV-записи, на вход годится список объектов или CSV-текст: нода приведёт его к таблице сама.
«Лист» — шаблон; пустое значение превращается в Sheet1. Книга каждый раз собирается с
нуля, поэтому лист в ней ровно один.
Путь тоже шаблон: reports/{{ variables.session_id }}.xlsx даёт по книге на сессию. На выходе —
path, bytes_written и rows_written (строки данных, без заголовка).
Частые ошибки
- Ожидание, что лист добавится в существующую книгу. Файл по указанному пути заменяется целиком: старые листы, формулы и форматирование исчезают. Чтобы копить историю, пишите каждый запуск в свой путь.
- Расчёт на форматирование. Нода пишет данные: ширина столбцов, стили, закрепление шапки и формулы не настраиваются. Если нужен фирменный вид, готовьте книгу-шаблон вне Iterna.
- Папки на WebDAV нет. В хранилище воркспейса недостающие каталоги создаются сами, на WebDAV запись в несуществующую папку не проходит.
- Одна таблица на несколько листов. Разложить один DataFrame по листам нельзя. Разделите данные выше по графу и пишите разные файлы, либо соберите отчёт в CSV.
- Пустая таблица. Получится книга с одним заголовком и
rows_written: 0— это успешный запуск, а не ошибка.
Входы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Таблицаdf | Исполнение + данныеexecute_data | dataframe | |
Хранилище файловfile_store | Данныеdata | — | показывается, когда connection_source ≠ "auto" |
Выходы
| Порт | Провод | Данные | Примечания |
|---|---|---|---|
Итог действияoutput | Исполнение + данныеexecute_data | object | |
Ошибкаon_error | Исполнение + данныеexecute_data | — | показывается, когда expose_error_output = true |
Файлfile | Данныеdata | file |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Путь к файлуpath | string | "" | Путь относительно корня хранилища. Шаблоны {{ }} подставляются на каждом запуске, поэтому ``reports/{{ variables.session_id }}.xlsx`` пишет отдельный файл на каждую сессию. поддерживает шаблоны |
Листsheet_name | string | Sheet1 | Имя создаваемого листа. Поддерживает шаблоны {{ }}. поддерживает шаблоны |
Записывать заголовокinclude_header | boolean | true | Записывать имена столбцов первой строкой. |
Источник подключенияconnection_source | string | auto | Откуда нода берёт подключение. «Из текущего запуска» использует то, что платформа уже знает (Telegram-бот, на который опубликован сценарий / собственное файловое хранилище этого пространства), и связей не требует. «Внешнее подключение» показывает ресурсный порт, чтобы в него можно было подключить конфиг-ноду. Варианты: |
Подпапкаstore_subfolder | string | "" | Необязательная папка внутри стора этого пространства, которую считать корнем, напр. `reports` или `sessions/{{ variables.session_id }}`. Пусто = корень стора. поддерживает шаблоны показывается при «Источник подключения» = Из текущего запуска |
| Дополнительно | |||
Макс. байтmax_bytes | integer | 52428800 | Не записывать больше указанного числа байт. |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этой ноды.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.