Files
kupshop/bundles/KupShop/FeedsBundle/Formatter/StreamedXLSXFormatter.php
2025-08-02 16:30:27 +02:00

48 lines
1.1 KiB
PHP

<?php
declare(strict_types=1);
namespace KupShop\FeedsBundle\Formatter;
use KupShop\FeedsBundle\Dto\FeedItem;
use KupShop\KupShopBundle\Util\Excel\ExcelGenerator;
class StreamedXLSXFormatter extends StreamedCSVFormatter
{
public function __construct(
private ExcelGenerator $excelGenerator,
) {
}
public static function getType(): string
{
return 'xlsx';
}
public static function getContentType(): string
{
return 'application/vnd.ms-excel';
}
/**
* @param \Generator<int, FeedItem> $data
*/
public function process(array $configuration, \Generator $data): void
{
$data = $this->getFlattenedGenerator($configuration, $data);
$header = [];
// create header by first item
if ($first = $data->current()) {
foreach (array_keys($first) as $key) {
$header[$key] = ['name' => $key];
}
}
$data->rewind();
// use generateExcelInternal bcs headers (filename, content type) are set implicitly by feeds route
$this->excelGenerator->generateExcelInternal($header, $data);
}
}