Este repositório contém um exemplo de implementação de um serviço de exportação de arquivos nos formatos XML, XLSX, CSV e PDF utilizando o framework Laravel. A implementação utiliza o padrão Strategy para flexibilidade na escolha do formato de exportação.
Legia o guia com o passo a passo em: Criando um Serviço de Exportação de Arquivos em XML, XLSX, CSV e PDF no Laravel 11
- Exportação para os formatos: XML, XLSX, CSV e PDF.
- Configuração do delimitador CSV para ponto e vírgula (;) no arquivo config/excel.php.
- Utilização dos pacotes:
- Maatwebsite/Excel para exportação em XLSX e CSV.
- Barryvdh/Laravel-DomPDF para exportação em PDF.
- Spatie/Array-to-XML para exportação em XML.
- app/Services: Contém as classes de serviço para exportação.
- app/Exports: Contém a classe genérica de exportação e classes específicas para cada formato.
- config/excel.php: Arquivo de configuração do pacote Maatwebsite Excel.
- config/exports.php: Arquivo de configuração com o mapeamento de classes para cada formato.
- resources/views/exports/pdf.blade.php: View Blade para exportação em PDF.
- app/Providers/ExportServiceProvider.php: Service Provider para registrar as estratégias de exportação.
- app/Http/Controllers/ExportController.php: Controller para gerenciar a exportação de dados.
- Clone este repositório:
git clone git@github.com:bholiveiradev/laravel-export-service.git
cd laravel-export-service
- Instale as dependências do Composer:
composer install
-
Copie o arquivo .env.example para .env e ajuste as configurações necessárias, como as credenciais do banco de dados e outras configurações específicas do seu ambiente.
-
Inicie os contêineres do Docker usando Laravel Sail:
./vendor/bin/sail up
Isso iniciará os contêineres do Docker necessários para executar a aplicação Laravel, incluindo PHP, MySQL, Redis, e outros serviços.
- Acesse a aplicação no navegador:
http://localhost
Para garantir que os arquivos exportados sejam acessíveis publicamente, execute o seguinte comando dentro do contêiner Laravel Sail:
./vendor/bin/sail artisan storage:link
Isso criará um link simbólico do diretório storage/app/public para public/storage, permitindo o acesso aos arquivos exportados.
Contribuições são bem-vindas! Sinta-se à vontade para enviar pull requests ou abrir issues relatando problemas ou sugestões.