createMock(TranslatorInterface::class)); $sut->registerCellFormatter('foo', new class() implements CellFormatterInterface { public function setFormattedValue(Worksheet $sheet, int $column, int $row, $value): void { if (!\is_scalar($value)) { throw new \InvalidArgumentException('Only scalar values are supported'); } $sheet->setCellValue([$column, $row], '##' . $value . '##'); } }); $sut->registerCellFormatter('bar', new class() implements CellFormatterInterface { public function setFormattedValue(Worksheet $sheet, int $column, int $row, $value): void { if (!\is_scalar($value)) { throw new \InvalidArgumentException('Only scalar values are supported'); } $sheet->setCellValue([$column, $row], '~' . $value . '~'); } }); $project = new Project(); $project->setName('test project'); $project->setVisible(false); $columns = [ new ColumnDefinition('test1', 'foo', function (Project $project) { return $project->getName(); }), new ColumnDefinition('test2', 'bar', function (Project $project) { return $project->getName(); }), new ColumnDefinition('test3', 'boolean', function (Project $project) { return $project->isVisible(); }), ]; $entries = [ $project ]; $spreadsheet = $sut->export($columns, $entries); $worksheet = $spreadsheet->getActiveSheet(); self::assertEquals('##test project##', $worksheet->getCell([1, 2])->getValue()); self::assertEquals('~test project~', $worksheet->getCell([2, 2])->getValue()); self::assertFalse($worksheet->getCell([3, 2])->getValue()); } }