createMock(TranslatorInterface::class)); $sut->registerCellFormatter('foo', new class() implements CellFormatterInterface { public function setFormattedValue(Worksheet $sheet, int $column, int $row, $value): void { $sheet->setCellValueByColumnAndRow($column, $row, '##' . $value . '##'); } }); $sut->registerCellFormatter('bar', new class() implements CellFormatterInterface { public function setFormattedValue(Worksheet $sheet, int $column, int $row, $value): void { $sheet->setCellValueByColumnAndRow($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->getCellByColumnAndRow(1, 2, false)->getValue()); self::assertEquals('~test project~', $worksheet->getCellByColumnAndRow(2, 2, false)->getValue()); self::assertFalse($worksheet->getCellByColumnAndRow(3, 2, false)->getValue()); } }