Все ноды/Data/DataFrame I/O

Записать XLSX

Записывает DataFrame в Excel-файл (xlsx) подключённого file_store. Перезаписывает целевой файл при существовании.

Записать XLSX
DataFrameSuccess
File storeError

Тип в графе: df_write_xlsx

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий воркфлоу

Вход
Записать XLSX
Выход
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Сохраняет таблицу книгой 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_datadataframe
File storefile_storeДанныеdata

показывается, когда connection_source ≠ "auto"

Выходы

ПортПроводДанныеПримечания
SuccessoutputИсполнение + данныеexecute_dataobject
Erroron_errorИсполнение + данныеexecute_data

показывается, когда expose_error_output = true

Настройки

ПолеТипПо умолчаниюОписание
Путь к файлуpathstring""

Путь относительно корня хранилища. Jinja-шаблоны рендерятся на каждом ране, поэтому ``reports/{{ variables.session_id }}.csv`` пишет отдельный файл на каждую сессию.

поддерживает шаблоны

Имя листаsheet_namestringSheet1

Имя создаваемого листа. Поддерживает Jinja.

поддерживает шаблоны

Включить строку заголовкаinclude_headerbooleantrue

Записывать имена столбцов первой строкой.

Источник подключенияconnection_sourcestringauto

Откуда нода берёт подключение. «Из контекста рана» использует то, что платформа уже знает (Telegram-бот, в который задеплоен этот воркфлоу / собственное файловое хранилище этого воркспейса), и не требует проводов. «Внешнее подключение» показывает ресурсный порт, чтобы в него можно было подключить конфиг-ноду.

Варианты: auto — Из контекста рана, external — Внешнее подключение (подключить конфиг-ноду)

Подпапкаstore_subfolderstring""

Необязательная папка внутри стора этого воркспейса, которую считать корнем, напр. `reports` или `sessions/{{ variables.session_id }}`. Пусто = корень стора.

поддерживает шаблоны

показывается при connection_source = auto

Дополнительно
Макс. байтmax_bytesinteger52428800

Не передавать больше указанного числа байт.

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.