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.

0 Comments

Say something

Login OR Register to write comments

Quer receber atualizações?

Confirme seu email e receba as atualizações mais recentes