Tutorial sobre como usar o PhpSpreadsheet para gerar um arquivo Excel em um projeto CakePHP 4. O PhpSpreadsheet é uma biblioteca poderosa que substituiu o antigo PHPExcel, oferecendo uma maneira mais moderna e eficiente de trabalhar com planilhas em PHP.
Vamos começar do princípio. Primeiro, você precisa instalar o PhpSpreadsheet no seu projeto CakePHP 4.
Passo 1: Instalação do PhpSpreadsheet
1. Abra o terminal e navegue até a pasta do seu projeto CakePHP 4.
2. Execute o comando de instalação via Composer:
```bash
composer require phpoffice/phpspreadsheet
```
Isso instalará o PhpSpreadsheet e suas dependências no seu projeto.
Passo 2: Criar a Função `csvCidades` com PhpSpreadsheet
Agora, vamos modificar uma função existente chamada `csvCidades` para que ela gere um arquivo Excel usando o PhpSpreadsheet.
1. **Crie um novo Controller ou use um existente:**
Por exemplo, `src/Controller/RelatoriosController.php`.
2. **Adicione o uso das classes do PhpSpreadsheet:**
No início do seu arquivo de controller, adicione:
```php
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
```
3. **Modifique a função `csvCidades`:**
Aqui está um exemplo de como a função modificada pode ficar:
```php
public function csvCidades()
{
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Adicione os cabeçalhos da coluna
$sheet->setCellValue('A1', 'ID');
$sheet->setCellValue('B1', 'Nome da Cidade');
// ... outros cabeçalhos conforme necessário
// Aqui você buscaria suas cidades do banco de dados
// Exemplo: $cidades = $this->Cidade->find('all');
// Para este exemplo, vou criar alguns dados fictícios
$cidades = [
['id' => 1, 'nome' => 'Cidade 1'],
['id' => 2, 'nome' => 'Cidade 2'],
// ... mais cidades
];
// Preencher os dados
$row = 2;
foreach ($cidades as $cidade) {
$sheet->setCellValue('A' . $row, $cidade['id']);
$sheet->setCellValue('B' . $row, $cidade['nome']);
// ... outros campos conforme necessário
$row++;
}
// Escrever o arquivo
$writer = new Xlsx($spreadsheet);
$filename = 'cidades.xlsx';
// Enviar cabeçalhos HTTP para download
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'. $filename .'"');
header('Cache-Control: max-age=0');
$writer->save('php://output');
exit;
}
```
4. **Teste a função:**
Acesse a função `csvCidades` pelo navegador ou por uma requisição HTTP para testar se o arquivo Excel está sendo gerado e baixado corretamente.
### Observações Finais
- Certifique-se de que as permissões de pasta estão corretas para que o CakePHP possa gerar e salvar o arquivo.
- Ajuste os cabeçalhos de colunas e os dados conforme necessário, dependendo da estrutura do seu banco de dados e dos dados que deseja exportar.
Este é um guia básico para começar com o PhpSpreadsheet no CakePHP 4. Com base nisso, você pode expandir e personalizar conforme suas necessidades.