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