Перейти к содержимому
Поиск
Php Разработка

PHP: полный мануал с примерами, функциями и ООП

Практический мануал PHP: от переменных и читаемого кода до безопасных форм, интеграций, базы данных и ООП на примере магазина. Учебный маршрут, поиск функций, подробные примеры, разбор ошибок и исходники для скачивания.

Александр НекрасовИзменено:
Практический мануал PHP: от переменных и функций к объектной модели интернет-магазина
PHP 8.5.11468 глав6256 карточек справочника
Дерево руководства

Глава 441 · От первой операции до полного справочника

XLSWriter: отчёты Excel, листы, формулы, изображения и форматирование

Создать XLSX из массива PHP, добавить листы и формулы, оформить строки и получить готовый файл отчёта.

XLSWriter: потоковая выгрузка XLSX

XLSWriter — нативное расширение для быстрого экспорта XLSX. Приложение создаёт книгу в разрешённом каталоге, выбирает лист, записывает заголовки и двумерные данные, добавляет форматы/формулы/изображения и получает путь готового файла.

Официальная страница: XLSWriter.

Класс Vtiful\Kernel\Excel

Книга управляет файлом, текущим листом, диапазонами и выводом. Большинство методов образует цепочку, но финальный output() нужен, чтобы закрыть книгу и получить путь артефакта.

ОперацияОфициальное назначение
Vtiful\Kernel\Excel::addSheetVtiful\Kernel\Excel addSheet
Vtiful\Kernel\Excel::autoFilterVtiful\Kernel\Excel autoFilter
Vtiful\Kernel\Excel::constMemoryVtiful\Kernel\Excel constMemory
Vtiful\Kernel\Excel::__constructVtiful\Kernel\Excel constructor
Vtiful\Kernel\Excel::dataVtiful\Kernel\Excel data
Vtiful\Kernel\Excel::fileNameVtiful\Kernel\Excel fileName
Vtiful\Kernel\Excel::getHandleVtiful\Kernel\Excel getHandle
Vtiful\Kernel\Excel::headerVtiful\Kernel\Excel header
Vtiful\Kernel\Excel::insertFormulaVtiful\Kernel\Excel insertFormula
Vtiful\Kernel\Excel::insertImageVtiful\Kernel\Excel insertImage
Vtiful\Kernel\Excel::insertTextVtiful\Kernel\Excel insertText
Vtiful\Kernel\Excel::mergeCellsVtiful\Kernel\Excel mergeCells
Vtiful\Kernel\Excel::outputVtiful\Kernel\Excel output
Vtiful\Kernel\Excel::setColumnVtiful\Kernel\Excel setColumn
Vtiful\Kernel\Excel::setRowVtiful\Kernel\Excel setRow

Официальная страница: The Vtiful\Kernel\Excel class.

Класс Vtiful\Kernel\Format

Format создаётся от дескриптора книги. Методы bold(), italic(), align() и underline() вызываются у объекта Format, после чего toResource() даёт ресурс, который передают в методы книги.

КонстантаКак читать в коде
Vtiful\Kernel\Format::FORMAT_ALIGN_LEFTОфициальное числовое значение: 1. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_CENTERОфициальное числовое значение: 2. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_RIGHTОфициальное числовое значение: 3. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_FILLОфициальное числовое значение: 4. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_JUSTIFYОфициальное числовое значение: 5. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER_ACROSSОфициальное числовое значение: 6. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_DISTRIBUTEDОфициальное числовое значение: 7. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_TOPОфициальное числовое значение: 8. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_BOTTOMОфициальное числовое значение: 9. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_CENTERОфициальное числовое значение: 10. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_JUSTIFYОфициальное числовое значение: 11. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::FORMAT_ALIGN_VERTICAL_DISTRIBUTEDОфициальное числовое значение: 12. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::UNDERLINE_SINGLEОфициальное числовое значение: 1. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::UNDERLINE_DOUBLEОфициальное числовое значение: 2. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::UNDERLINE_SINGLE_ACCOUNTINGОфициальное числовое значение: 3. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.
Vtiful\Kernel\Format::UNDERLINE_DOUBLE_ACCOUNTINGОфициальное числовое значение: 4. Передавайте именованную константу, чтобы назначение оставалось видимым в коде.

Сохранены все официальные инициализаторы констант Format: 16.

ОперацияОфициальное назначение
Vtiful\Kernel\Format::alignVtiful\Kernel\Format align
Vtiful\Kernel\Format::boldVtiful\Kernel\Format bold
Vtiful\Kernel\Format::italicVtiful\Kernel\Format italic
Vtiful\Kernel\Format::underlineVtiful\Kernel\Format underline

Официальная страница: The Vtiful\Kernel\Format class.

Установка XLSWriter

Официальный раздел установки направляет к PECL-пакету xlswriter. В исходнике официальной страницы configure.xml присутствует ошибочная строка про XML-RPC; она не относится к XLSWriter. Практическая проверка — наличие расширения, классов Vtiful\Kernel\Excel/Format и создание минимального XLSX.

Официальная страница: Installation.

Требование XLSWriter

Зафиксированный официальный источник указывает PHP 7.0 или новее. Для текущего проекта дополнительно проверяют поддержку выбранной версии PHP самим релизом расширения и совместимость libxlsxwriter.

Официальная страница: Requirements.

Дескриптор книги и ресурс формата

Официальная страница отмечает внутренний ресурс, возвращаемый книгой и используемый Vtiful\Kernel\Format. На практике дескриптор получают через getHandle(), затем создают объект Format и превращают его в ресурс формата для методов записи.

Официальная страница: Resource Types.

Подготовка выгрузки XLSX

До записиЗачем
Создать отдельный каталог экспортаНе смешивать пользовательские имена с путём файловой системы
Определить столбцы и типыПорядок заголовков должен совпадать с порядком данных
Нормализовать даты и числаExcel не должен угадывать тип по локали
Экранировать формульные префиксы во внешнем текстеЗначения, начинающиеся с =, +, - или @, могут стать формулой
Выбрать constMemory для большого набораНе держать весь отчёт и всю книгу в памяти

Официальная страница: Installing/Configuring.

Книга, лист, ячейка и почему XLSX начинается с PK

Книга содержит листы; лист содержит строки и ячейки; формат задаёт отображение, а формула — вычисление в табличном редакторе. Сам XLSX является ZIP-контейнером из XML-файлов, поэтому размер исходного массива и размер готового архива не равны расходу памяти PHP.

Путь отчёта
  1. Получить строки из базы или API
  2. Создать книгу и выбрать лист
  3. Записать заголовок и данные
  4. Добавить формат, фильтр и формулы
  5. Закрыть книгу, проверить файл и отдать его пользователю

Первый отчёт, который можно открыть в Excel

Создать XLSX-отчёт с заголовком, данными, фильтром и формулойПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог exports');
}

$rows = [
    ['A-42', 12500, 'Оплачен'],
    ['A-43', 7800, 'Ожидает'],
    ['A-44', 3100, 'Отменён'],
];

$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$book = $excel->fileName('orders.xlsx', 'Заказы');
$book->header(['Заказ', 'Сумма', 'Статус'])
    ->data($rows)
    ->autoFilter('A1:C4')
    ->setColumn('A:A', 14.0)
    ->setColumn('B:B', 16.0)
    ->insertFormula(4, 1, '=SUM(B2:B4)');

$path = $book->output();
if (!is_string($path) || !is_file($path)) {
    throw new RuntimeException('XLSX не создан');
}
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') {
    throw new RuntimeException('Файл не имеет ZIP-сигнатуру XLSX');
}
echo basename($path), PHP_EOL;
echo 'rows=3 formula=SUM(B2:B4) format=XLSX', PHP_EOL;

XLSX — ZIP-контейнер, поэтому проверяется сигнатура PK и существование файла. Формула записывается в книгу, а окончательное вычисление может выполнить табличный редактор. Runtime xlswriter на текущем стенде пока не заявлен.
Что должно получиться в совместимом окружении: orders.xlsx
rows=3 formula=SUM(B2:B4) format=XLSX

Большая выгрузка: считать из базы порциями

Выгрузить много строк без второго огромного массива в памятиПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

function orderRows(PDO $pdo): Generator
{
    $query = $pdo->query('SELECT number, total, status FROM orders ORDER BY id');
    while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
        yield [(string) $row['number'], (float) $row['total'], (string) $row['status']];
    }
}

$pdo = new PDO('sqlite::memory:', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$pdo->exec('CREATE TABLE orders (id INTEGER PRIMARY KEY, number TEXT, total REAL, status TEXT)');
$insert = $pdo->prepare('INSERT INTO orders (number, total, status) VALUES (?, ?, ?)');
foreach ([
    ['A-42', 12500.0, 'Оплачен'],
    ['A-43', 7800.0, 'Ожидает'],
    ['A-44', 3100.0, 'Отменён'],
] as $fixture) {
    $insert->execute($fixture);
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог exports');
}

$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$sheet = $excel->constMemory('orders-large.xlsx', 'Заказы');
$sheet->header(['Заказ', 'Сумма', 'Статус']);

$batch = [];
foreach (orderRows($pdo) as $row) {
    $batch[] = $row;
    if (count($batch) === 500) {
        $sheet->data($batch);
        $batch = [];
    }
}
if ($batch !== []) {
    $sheet->data($batch);
}

$path = $sheet->output();
if (!is_string($path) || !is_file($path)) {
    throw new RuntimeException('XLSX не создан');
}
if (file_get_contents($path, false, null, 0, 2) !== 'PK') {
    throw new RuntimeException('Файл не имеет ZIP-сигнатуру XLSX');
}
echo basename((string) $path), PHP_EOL;
echo 'source=PDO batches<=500 mode=constant-memory', PHP_EOL;

Генератор читает результат базы построчно, а пакет ограничен 500 строками. Код не создаёт полный массив всех заказов и не кодирует XLSX в base64/JSON. Фактический предел памяти и возможность повторных data() должны быть подтверждены на выбранной версии xlswriter до публикации runtime-метрики.
Что должно получиться в совместимом окружении: orders-large.xlsx
source=PDO batches<=500 mode=constant-memory

Увеличение memory_limit не исправляет архитектуру, где данные одновременно лежат в PDO-результате, огромном PHP-массиве, объектной модели книги, строке XLSX и base64-копии для JSON. Файл сохраняют на диск или поток и отдают отдельным ответом.

Проблема из практикиКак она закрыта в руководстве
Большая книга исчерпывает память, когда весь набор и модель документа одновременно держатся в PHP-массивах.Сценарий constMemory читает PDO построчно, ограничивает пакет и сохраняет файл вместо второй копии в памяти.
XLSX кодируют в base64 внутри JSON, увеличивая расход памяти и объём ответа.Глава завершает файл на диске, проверяет ZIP-сигнатуру и рекомендует отдельную файловую выдачу или поток.

Как превратить отдельные вызовы в рабочий сервис

Спрячьте нативное расширение за одним прикладным классом: на вход он получает проверенную модель, внутри вызывает операции этой главы, а наружу возвращает путь или байты готового документа. Так HTTP-контроллер не знает о ресурсах, временных файлах и константах расширения.

Следующий шаг: добавить временный каталог на один запрос, журнал ошибок без секретных данных, лимит размера/времени и независимую проверку результата другим инструментом.

Функции и методы этой темы

Откройте карточку, чтобы увидеть договор функции, примеры, ограничения и связанные инструменты.

Vtiful\Kernel\Excel::addSheetДобавить в книгу ещё один лист с понятным именем.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::addSheet(string $sheetName): mixed

Добавить в книгу ещё один лист с понятным именем.

Официальная сигнатура. Vtiful\Kernel\Excel::addSheet(string $sheetName): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $sheetNameОтображаемое имя листа; учитывайте ограничения длины и запрещённые символы Excel.
Точная формулировка PHP Manual

Worksheet name

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::addSheetПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$result = $excel->addSheet('Итоги');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::addSheet: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::addSheetПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$result = $excel->addSheet('Резерв');
$result->header(['SKU', 'Резерв'])->data([['A-42', 4], ['B-17', 0]]);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::addSheet: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

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

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel addSheet

Description Create a new worksheet in the xlsx file.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::autoFilterВключить автофильтр для указанного диапазона таблицы.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::autoFilter(string $scope): mixed

Включить автофильтр для указанного диапазона таблицы.

Официальная сигнатура. Vtiful\Kernel\Excel::autoFilter(string $scope): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $scopeДиапазон Excel, к которому применяется операция, например A1:C200.
Точная формулировка PHP Manual

Cell start and end coordinate string.

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::autoFilterПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->autoFilter('A1:C3');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::autoFilter: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::autoFilterПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->autoFilter('A1:C3');
$excel->setColumn('A:C', 18.0);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::autoFilter: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel autoFilter

Description Add autofilter to a worksheet.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::constMemoryСоздать XLSX в режиме постоянного расхода памяти для большой выгрузки.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::constMemory(string $fileName, string $sheetName = ?): mixed

Создать XLSX в режиме постоянного расхода памяти для большой выгрузки.

Официальная сигнатура. Vtiful\Kernel\Excel::constMemory(string $fileName, string $sheetName = ?): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $fileNameБезопасное имя итогового XLSX внутри заранее разрешённого каталога.
Точная формулировка PHP Manual

XLSX file name

string $sheetName = значение по умолчаниюОтображаемое имя листа; учитывайте ограничения длины и запрещённые символы Excel.
Точная формулировка PHP Manual

Worksheet name

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

Где увидеть в целой задаче. большую выгрузку из PDO порциями. Что знать до примера: переменные, вызов функций и возврат, массивы, объекты и методы, исключения и обработка отказа, файлы и каталоги.

Минимальная операция: Vtiful\Kernel\Excel::constMemoryПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$result = $excel->constMemory('orders.xlsx', 'Заказы');
$result->header(['SKU', 'Остаток']);
$result->data([['A-42', 3]]);
$path = $result->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::constMemory: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::constMemoryПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$result = $excel->constMemory('warehouse.xlsx', 'Остатки');
$result->header(['SKU', 'Остаток']);
foreach ([['A-42', 17], ['B-17', 2], ['C-11', 0]] as $row) { $result->data([$row]); }
$path = $result->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::constMemory: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

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

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel constMemory

Description Write a large file with constant memory usage.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::__constructСоздать объект Excel с каталогом, куда разрешено записывать отчёты.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::__construct(array $config): void

Создать объект Excel с каталогом, куда разрешено записывать отчёты.

Официальная сигнатура. Vtiful\Kernel\Excel::__construct(array $config): void.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
array $configКонфигурация XLSWriter, прежде всего разрешённый каталог path для итоговых файлов.
Точная формулировка PHP Manual

XLSX file export configuration

Возврат. Тип void. Официальная страница не содержит отдельного абзаца о возврате; ориентируйтесь на сигнатуру, предупреждения и реальный артефакт.

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

Минимальная операция: Vtiful\Kernel\Excel::__constructПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$result = new \Vtiful\Kernel\Excel($config);
echo get_class($result), PHP_EOL;

Vtiful\Kernel\Excel::__construct: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: Vtiful\Kernel\Excel

Отчёт из реальных данных: Vtiful\Kernel\Excel::__constructПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$result = new \Vtiful\Kernel\Excel($config);
echo get_class($result), PHP_EOL;
$result->fileName('warehouse.xlsx', 'Остатки')->header(['SKU', 'Остаток'])->data([['A-42', 17]]);
$path = $result->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('Книга не создана'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::__construct: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: Vtiful\Kernel\Excel warehouse.xlsx

Отказ и граница проверки. успех не имеет возвращаемого значения, поэтому проверяется последующий эффект. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel constructor

Description Vtiful\Kernel\Excel constructor, create a class object.

Return:

Vtiful\Kernel\Excel::dataЗаписать двумерный массив строк в текущий лист.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::data(array $data): mixed

Записать двумерный массив строк в текущий лист.

Официальная сигнатура. Vtiful\Kernel\Excel::data(array $data): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
array $dataДвумерный массив строк таблицы: внешний массив — строки, внутренний — значения столбцов.
Точная формулировка PHP Manual

worksheet data

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::dataПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$result = $excel->data([['A-42', 3], ['B-17', 5]]);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::data: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::dataПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$result = $excel->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$excel->autoFilter('A1:C2');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::data: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

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

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel data

Description Write a data in the worksheet.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::fileNameСоздать обычный XLSX-файл и выбрать первый лист.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::fileName(string $fileName, string $sheetName = ?): mixed

Создать обычный XLSX-файл и выбрать первый лист.

Официальная сигнатура. Vtiful\Kernel\Excel::fileName(string $fileName, string $sheetName = ?): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $fileNameБезопасное имя итогового XLSX внутри заранее разрешённого каталога.
Точная формулировка PHP Manual

XLSX file name

string $sheetName = значение по умолчаниюОтображаемое имя листа; учитывайте ограничения длины и запрещённые символы Excel.
Точная формулировка PHP Manual

Worksheet name

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::fileNameПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$result = $excel->fileName('orders.xlsx', 'Заказы');
$path = $result->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::fileName: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::fileNameПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$result = $excel->fileName('warehouse.xlsx', 'Остатки');
$result->header(['SKU', 'Остаток'])->data([['A-42', 17], ['B-17', 2]]);
$path = $result->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::fileName: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

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

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel fileName

Description Create a brand new xlsx file and create a worksheet.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::getHandleПолучить внутренний дескриптор книги для создания форматов.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::getHandle(): mixed

Получить внутренний дескриптор книги для создания форматов.

Официальная сигнатура. Vtiful\Kernel\Excel::getHandle(): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
Параметров нетОперация использует конфигурацию расширения или состояние созданного объекта.

Возврат. Тип mixed. Официальный текст: Return Values Resource

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

Минимальная операция: Vtiful\Kernel\Excel::getHandleПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$result = $excel->getHandle();
if (!is_resource($result)) { throw new RuntimeException('Дескриптор книги не получен'); }
echo 'handle=resource', PHP_EOL;

Vtiful\Kernel\Excel::getHandle: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: handle=resource

Отчёт из реальных данных: Vtiful\Kernel\Excel::getHandleПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$result = $excel->getHandle();
if (!is_resource($result)) { throw new RuntimeException('Дескриптор книги не получен'); }
echo 'handle=resource', PHP_EOL;
$format = new \Vtiful\Kernel\Format($result);
$bold = $format->bold()->toResource();
$excel->header(['SKU', 'Остаток'])->setColumn('A:B', 20.0, $bold);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::getHandle: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: handle=resource warehouse.xlsx

Отказ и граница проверки. сначала проверяется заявленный тип результата. Формат должен принадлежать дескриптору этой книги; используйте именованные константы и передавайте полученный resource только совместимым методам.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel getHandle

Description Get the xlsx text resource handle.

Return: Return Values Resource

Vtiful\Kernel\Excel::headerЗаписать строку заголовков перед данными отчёта.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::header(array $headerData): mixed

Записать строку заголовков перед данными отчёта.

Официальная сигнатура. Vtiful\Kernel\Excel::header(array $headerData): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
array $headerDataМассив заголовков в том же порядке, что и столбцы данных.
Точная формулировка PHP Manual

worksheet header data

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::headerПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$result = $excel->header(['SKU', 'Количество']);
$result->data([['A-42', 3], ['B-17', 5]]);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::header: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальной структуры данных: Vtiful\Kernel\Excel::headerПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$excel->fileName('warehouse.xlsx', 'Остатки');
$records = [
    ['sku' => 'A-42', 'available' => 13, 'status' => 'В наличии'],
    ['sku' => 'B-17', 'available' => 2, 'status' => 'Заканчивается'],
];
$columns = ['sku' => 'Артикул', 'available' => 'Доступно', 'status' => 'Статус'];
$result = $excel->header(array_values($columns));
$rows = array_map(static fn(array $record): array => array_map(static fn(string $key): mixed => $record[$key], array_keys($columns)), $records);
$result->data($rows)->autoFilter('A1:C3');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::header: Заголовок строится из явной схемы ассоциативных записей, а строки приводятся к тому же порядку ключей: это защищает выгрузку от перестановки столбцов. Выполнение требует ext/xlswriter; локально выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — заголовок из схемы, 3 столбца и 2 строки данных; сигнатура PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel header

Description Write a header in the worksheet.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::insertFormulaЗаписать формулу Excel в конкретную ячейку.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::insertFormula(int $row, int $column, string $formula): mixed

Записать формулу Excel в конкретную ячейку.

Официальная сигнатура. Vtiful\Kernel\Excel::insertFormula(int $row, int $column, string $formula): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
int $rowНомер строки XLSX по правилам расширения; проверьте базу отсчёта на минимальном файле.
Точная формулировка PHP Manual

cell row

int $columnНомер столбца XLSX по правилам расширения; это индекс, а не буква A/B/C.
Точная формулировка PHP Manual

cell column

string $formulaФормула Excel без вычисления в PHP; результат пересчитает табличный редактор.
Точная формулировка PHP Manual

formula string

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::insertFormulaПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->insertFormula(2, 2, '=SUM(B2:B200)');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::insertFormula: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::insertFormulaПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->insertFormula(2, 3, '=B2-C2');
$excel->insertText(3, 0, 'Свободно')->insertFormula(3, 1, '=B2-C2');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::insertFormula: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel insertFormula

Description Insert calculation formula.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::insertImageВставить локальное изображение в выбранную ячейку.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::insertImage(int $row, int $column, string $localImagePath): mixed

Вставить локальное изображение в выбранную ячейку.

Официальная сигнатура. Vtiful\Kernel\Excel::insertImage(int $row, int $column, string $localImagePath): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
int $rowНомер строки XLSX по правилам расширения; проверьте базу отсчёта на минимальном файле.
Точная формулировка PHP Manual

cell row

int $columnНомер столбца XLSX по правилам расширения; это индекс, а не буква A/B/C.
Точная формулировка PHP Manual

cell column

string $localImagePathПуть к локальному PNG/JPEG, который действительно доступен PHP-процессу.
Точная формулировка PHP Manual

local image path

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::insertImageПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$imagePath = __DIR__ . '/fixtures/logo.png';
if (!is_file($imagePath)) { throw new RuntimeException('Нужен PNG fixture'); }
$result = $excel->insertImage(1, 0, $imagePath);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::insertImage: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::insertImageПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$imagePath = __DIR__ . '/fixtures/warehouse.png';
if (!is_file($imagePath)) { throw new RuntimeException('Нужен PNG fixture'); }
$result = $excel->insertImage(1, 0, $imagePath);
$excel->setRow('2:8', 28.0);
$excel->insertText(8, 0, 'Логотип склада');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::insertImage: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте fixture изображения, координаты и размер; затем откройте готовую книгу независимым табличным редактором.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel insertImage

Description Insert a local image into the cell.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::insertTextЗаписать число или текст в конкретную ячейку с необязательным форматом.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::insertText(int $row, int $column, int|float|string $data, string $format = ?): mixed

Записать число или текст в конкретную ячейку с необязательным форматом.

Официальная сигнатура. Vtiful\Kernel\Excel::insertText(int $row, int $column, int|float|string $data, string $format = ?): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
int $rowНомер строки XLSX по правилам расширения; проверьте базу отсчёта на минимальном файле.
Точная формулировка PHP Manual

cell row

int $columnНомер столбца XLSX по правилам расширения; это индекс, а не буква A/B/C.
Точная формулировка PHP Manual

cell column

int|float|string $dataДвумерный массив строк таблицы: внешний массив — строки, внутренний — значения столбцов.
Точная формулировка PHP Manual

data to be written

string $format = значение по умолчаниюРесурс формата XLSWriter или строковый формат именно согласно сигнатуре выбранной версии.
Точная формулировка PHP Manual

String format

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::insertTextПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$result = $excel->insertText(1, 0, 'A-42');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::insertText: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::insertTextПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$result = $excel->insertText(1, 1, 17);
$excel->insertText(2, 0, 'B-17')->insertText(2, 1, 2);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::insertText: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel insertText

Description Write text in a cell.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::mergeCellsОбъединить диапазон ячеек и записать в него значение.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::mergeCells(string $scope, string $data): mixed

Объединить диапазон ячеек и записать в него значение.

Официальная сигнатура. Vtiful\Kernel\Excel::mergeCells(string $scope, string $data): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $scopeДиапазон Excel, к которому применяется операция, например A1:C200.
Точная формулировка PHP Manual

cell start and end coordinate strings

string $dataДвумерный массив строк таблицы: внешний массив — строки, внутренний — значения столбцов.
Точная формулировка PHP Manual

string data

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::mergeCellsПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->mergeCells('A1:C1', 'Отчёт по заказам');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::mergeCells: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальной структуры данных: Vtiful\Kernel\Excel::mergeCellsПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$excel->fileName('warehouse.xlsx', 'Остатки');
$result = $excel->mergeCells('A1:D1', 'Складские остатки на 16.10.2026');
$result->insertText(1, 0, 'SKU')
    ->insertText(1, 1, 'Наименование')
    ->insertText(1, 2, 'Остаток')
    ->insertText(1, 3, 'Резерв')
    ->insertText(2, 0, 'A-42')
    ->insertText(2, 1, 'Кабель')
    ->insertText(2, 2, 17)
    ->insertText(2, 3, 4);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::mergeCells: Объединение создаёт общий заголовок отчёта, а табличные данные записываются ниже отдельными ячейками. Выполнение требует ext/xlswriter; локально выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — объединённый заголовок A1:D1 и отдельная строка данных; сигнатура PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel mergeCells

Description Merge Cells.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::outputЗакрыть книгу и получить путь к готовому XLSX-файлу.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::output(): mixed

Закрыть книгу и получить путь к готовому XLSX-файлу.

Официальная сигнатура. Vtiful\Kernel\Excel::output(): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
Параметров нетОперация использует конфигурацию расширения или состояние созданного объекта.

Возврат. Тип mixed. Официальный текст: Return Values XLSX file path;

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

Минимальная операция: Vtiful\Kernel\Excel::outputПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->output();
if (!is_string($result) || !is_file($result)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($result, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($result), PHP_EOL;

Vtiful\Kernel\Excel::output: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx

Отчёт из реальных данных: Vtiful\Kernel\Excel::outputПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->output();
if (!is_string($result) || !is_file($result)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($result, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($result), PHP_EOL;
echo 'bytes=', filesize($result), PHP_EOL;

Vtiful\Kernel\Excel::output: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx bytes=<положительное число>

Отказ и граница проверки. сначала проверяется заявленный тип результата. Создайте каталог, завершите книгу, проверьте существование файла и ZIP-сигнатуру PK.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel output

Description Output xlsx file to disk.

Return: Return Values XLSX file path;

Vtiful\Kernel\Excel::setColumnЗадать ширину столбцов и при необходимости их формат.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::setColumn(string $range, float $width, resource $format = ?): mixed

Задать ширину столбцов и при необходимости их формат.

Официальная сигнатура. Vtiful\Kernel\Excel::setColumn(string $range, float $width, resource $format = ?): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $rangeДиапазон столбцов Excel в A1-подобной форме, например A:C.
Точная формулировка PHP Manual

cell start and end coordinate strings

float $widthРазмер/шаг в единицах текущей операции; для геометрии PostScript обычно используются пункты.
Точная формулировка PHP Manual

column width

resource $format = значение по умолчаниюРесурс формата XLSWriter или строковый формат именно согласно сигнатуре выбранной версии.
Точная формулировка PHP Manual

cell format resource

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::setColumnПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->setColumn('A:C', 18.0);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::setColumn: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальной структуры данных: Vtiful\Kernel\Excel::setColumnПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['SKU', 'Описание', 'Остаток'])->data([['A-42', 'Кабель силовой огнестойкий', 17], ['B-17', 'Муфта соединительная', 2]]);
$excel->setColumn('A:A', 14.0);
$result = $excel->setColumn('B:B', 42.0);
$result->setColumn('C:C', 12.0)->autoFilter('A1:C3');
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::setColumn: Ширина выбирается по назначению столбца: короткий SKU, длинное описание и компактный числовой остаток. Выполнение требует ext/xlswriter; локально выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — каждому типу данных назначена отдельная ширина; сигнатура PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel setColumn

Description Set the format of the column.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Excel::setRowЗадать высоту строк и при необходимости их формат.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Excel::setRow(string $range, float $height, resource $format = ?): mixed

Задать высоту строк и при необходимости их формат.

Официальная сигнатура. Vtiful\Kernel\Excel::setRow(string $range, float $height, resource $format = ?): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
string $rangeДиапазон столбцов Excel в A1-подобной форме, например A:C.
Точная формулировка PHP Manual

cell start and end coordinate strings

float $heightРазмер/шаг в единицах текущей операции; для геометрии PostScript обычно используются пункты.
Точная формулировка PHP Manual

row height

resource $format = значение по умолчаниюРесурс формата XLSWriter или строковый формат именно согласно сигнатуре выбранной версии.
Точная формулировка PHP Manual

cell format resource

Возврат. Тип mixed. Официальный текст: Return Values Vtiful\Kernel\Excel instance

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

Минимальная операция: Vtiful\Kernel\Excel::setRowПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->setRow('1', 24.0);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::setRow: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отчёт из реальных данных: Vtiful\Kernel\Excel::setRowПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['SKU', 'Остаток', 'Резерв'])->data([['A-42', 17, 4], ['B-17', 2, 0]]);
$result = $excel->setRow('1:2', 30.0);
$excel->setColumn('A:C', 18.0);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
$head = file_get_contents($path, false, null, 0, 2);
if ($head !== 'PK') { throw new RuntimeException('XLSX должен быть ZIP-контейнером'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Excel::setRow: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — файл существует и начинается с ZIP-сигнатуры PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Проверьте диапазон/индексы, тип входных данных и завершите книгу через output(); отсутствие исключения не доказывает читаемость XLSX.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Excel setRow

Description Set the format of the row.

Return: Return Values Vtiful\Kernel\Excel instance

Vtiful\Kernel\Format::alignСоздать формат с заданным выравниванием.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Format::align(resource $handle, int $style): mixed

Создать формат с заданным выравниванием.

Официальная сигнатура. Vtiful\Kernel\Format::align(resource $handle, int $style): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
resource $handleВнутренний дескриптор открытой XLSX-книги, полученный через getHandle().
Точная формулировка PHP Manual

xlsx file handle

int $styleИменованный стиль/константа именно той функции, куда он передаётся.
Точная формулировка PHP Manual

Vtiful\Kernel\Format constant

Возврат. Тип mixed. Официальный текст: Return Values Resource

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

Минимальная операция: Vtiful\Kernel\Format::alignПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['Название', 'Значение'])->data([['Продажи', 12500], ['Возвраты', 800]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_CENTER)->toResource();
$excel->setColumn('A:B', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::align: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — таблица с двумя строками и применённым форматом.

Отчёт из реальной структуры данных: Vtiful\Kernel\Format::alignПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['Операция', 'Сумма'])->data([['Приход', 12500], ['Расход', -3200], ['Итого', 9300]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_RIGHT)->toResource();
$excel->setColumn('B:B', 18.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::align: Правое выравнивание применяется только к денежному столбцу отчёта, чтобы суммы разных знаков читались как единая колонка. Выполнение требует ext/xlswriter; локально выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — числовой столбец выровнен вправо и файл начинается с PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Формат должен принадлежать дескриптору этой книги; используйте именованные константы и передавайте полученный resource только совместимым методам.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Format align

Description set cell align

Return: Return Values Resource

Vtiful\Kernel\Format::boldСоздать полужирный формат для заголовков и итогов.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Format::bold(resource $handle): mixed

Создать полужирный формат для заголовков и итогов.

Официальная сигнатура. Vtiful\Kernel\Format::bold(resource $handle): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
resource $handleВнутренний дескриптор открытой XLSX-книги, полученный через getHandle().
Точная формулировка PHP Manual

xlsx file handle

Возврат. Тип mixed. Официальный текст: Return Values Resource

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

Минимальная операция: Vtiful\Kernel\Format::boldПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['Название', 'Значение'])->data([['Продажи', 12500], ['Возвраты', 800]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->bold()->toResource();
$excel->setColumn('A:B', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::bold: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — таблица с двумя строками и применённым форматом.

Отчёт из реальных данных: Vtiful\Kernel\Format::boldПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['Название', 'Значение'])->data([['Продажи', 12500], ['Возвраты', 800]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->bold()->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_RIGHT)->toResource();
$excel->setColumn('A:B', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::bold: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — таблица с двумя строками и применённым форматом.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Формат должен принадлежать дескриптору этой книги; используйте именованные константы и передавайте полученный resource только совместимым методам.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Format bold

Description Vtiful\Kernel\Format bold format

Return: Return Values Resource

Vtiful\Kernel\Format::italicСоздать курсивный формат для примечаний.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Format::italic(resource $handle): mixed

Создать курсивный формат для примечаний.

Официальная сигнатура. Vtiful\Kernel\Format::italic(resource $handle): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
resource $handleВнутренний дескриптор открытой XLSX-книги, полученный через getHandle().
Точная формулировка PHP Manual

xlsx file handle

Возврат. Тип mixed. Официальный текст: Return Values Resource

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

Минимальная операция: Vtiful\Kernel\Format::italicПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['Название', 'Значение'])->data([['Продажи', 12500], ['Возвраты', 800]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->italic()->toResource();
$excel->setColumn('A:B', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::italic: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — таблица с двумя строками и применённым форматом.

Отчёт из реальных данных: Vtiful\Kernel\Format::italicПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['Название', 'Значение'])->data([['Продажи', 12500], ['Возвраты', 800]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->italic()->align(\Vtiful\Kernel\Format::FORMAT_ALIGN_LEFT)->toResource();
$excel->setColumn('A:B', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::italic: второй пример меняет набор столбцов/оформление и проверяет созданный XLSX по существованию и ZIP-сигнатуре. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — таблица с двумя строками и применённым форматом.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Формат должен принадлежать дескриптору этой книги; используйте именованные константы и передавайте полученный resource только совместимым методам.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Format italic

Description Vtiful\Kernel\Format italic format

Return: Return Values Resource

Vtiful\Kernel\Format::underlineСоздать формат с выбранным типом подчёркивания.

PECL xlswriter >= 1.2.1 · xlswriter; libxlsxwriter

Vtiful\Kernel\Format::underline(resource $handle, int $style): mixed

Создать формат с выбранным типом подчёркивания.

Официальная сигнатура. Vtiful\Kernel\Format::underline(resource $handle, int $style): mixed.

Доступность. Точная строка официального versions.xml: PECL xlswriter >= 1.2.1.

ПараметрЧто приходит и зачем
resource $handleВнутренний дескриптор открытой XLSX-книги, полученный через getHandle().
Точная формулировка PHP Manual

xlsx file handle

int $styleИменованный стиль/константа именно той функции, куда он передаётся.
Точная формулировка PHP Manual

Vtiful\Kernel\Format constant

Возврат. Тип mixed. Официальный текст: Return Values Resource

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

Минимальная операция: Vtiful\Kernel\Format::underlineПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$config = ['path' => $directory];
$excel = new \Vtiful\Kernel\Excel($config);
$excel->fileName('orders.xlsx', 'Заказы');
$excel->header(['Название', 'Значение'])->data([['Продажи', 12500], ['Возвраты', 800]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->underline(\Vtiful\Kernel\Format::UNDERLINE_SINGLE)->toResource();
$excel->setColumn('A:B', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::underline: показан корректный объектный вызов и место метода в жизненном цикле книги. Выполнение требует ext/xlswriter; в текущей среде выполнен PHP lint.
Что должно получиться в совместимом окружении: orders.xlsx — таблица с двумя строками и применённым форматом.

Отчёт из реальной структуры данных: Vtiful\Kernel\Format::underlineПример для указанного окружения
<?php
declare(strict_types=1);

if (!extension_loaded('xlswriter')) {
    throw new RuntimeException('Нужно расширение xlswriter');
}

$directory = __DIR__ . '/warehouse-exports';
if (!is_dir($directory) && !mkdir($directory, 0775, true) && !is_dir($directory)) {
    throw new RuntimeException('Не создан каталог выгрузки');
}
$excel = new \Vtiful\Kernel\Excel(['path' => $directory]);
$excel->fileName('warehouse.xlsx', 'Остатки');
$excel->header(['Показатель', 'Значение'])->data([['Приход', 12500], ['Расход', 3200], ['Итого', 9300]]);
$format = new \Vtiful\Kernel\Format($excel->getHandle());
$result = $format->underline(\Vtiful\Kernel\Format::UNDERLINE_DOUBLE_ACCOUNTING)->toResource();
$excel->setRow('4', 24.0, $result);
$path = $excel->output();
if (!is_string($path) || !is_file($path)) { throw new RuntimeException('XLSX не создан'); }
if (file_get_contents($path, false, null, 0, 2) !== 'PK') { throw new RuntimeException('Нет ZIP-сигнатуры XLSX'); }
echo basename($path), PHP_EOL;

Vtiful\Kernel\Format::underline: Двойное бухгалтерское подчёркивание выделяет итоговую строку, а не весь столбец с одинаковым форматированием. Выполнение требует ext/xlswriter; локально выполнен PHP lint.
Что должно получиться в совместимом окружении: warehouse.xlsx — итоговая строка имеет двойное бухгалтерское подчёркивание; сигнатура PK.

Отказ и граница проверки. сначала проверяется заявленный тип результата. Формат должен принадлежать дескриптору этой книги; используйте именованные константы и передавайте полученный resource только совместимым методам.

Полный официальный текст карточки на английском

Purpose: Vtiful\Kernel\Format underline

Description Vtiful\Kernel\Format underline format

Return: Return Values Resource

Источники и обсуждения

Код и руководство с собой

Скачайте самостоятельные примеры с исходными данными, инструкциями и ожидаемыми результатами. Примеры HTTP и фрагменты для проекта помечены отдельно: им нужно указанное окружение.

Код не исполняется на сайте. Скачайте нужный пример и запускайте его в своём локальном окружении.

Материалы сверены 2026-10-12. Примеры и объяснения написаны для этого руководства; источники и обсуждения доступны в каждой главе.