Trabalho com Excel em PHP: bibliotecas PhpSpreadsheet, PhpOffice e geração de XLSX

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com Excel em PHP: bibliotecas PhpSpreadsheet e PhpOffice

No desenvolvimento web moderno, surge frequentemente a necessidade de exportar dados para o formato Excel, importar relatórios ou processar planilhas no lado do servidor. O PHP oferece várias bibliotecas poderosas para trabalhar com arquivos .xlsx, .xls e .ods. Neste artigo, abordaremos detalhadamente o PhpSpreadsheet — uma biblioteca moderna e ativamente desenvolvida que substituiu a obsoleta PHPExcel.



O que é PhpSpreadsheet?

PhpSpreadsheet é uma biblioteca para ler, escrever e editar planilhas eletrônicas em vários formatos: Excel, OpenDocument, CSV, HTML e PDF. Ela é escrita em PHP puro, não requer a instalação de extensões adicionais (além das padrão zip e xml) e suporta todos os principais recursos do Excel: estilos, fórmulas, gráficos, formatação condicional, várias planilhas e muito mais.



Instalação

A instalação é feita via Composer:

composer require phpoffice/phpspreadsheet

Após a instalação, uma pasta vendor com carregamento automático é criada no projeto. Para começar, basta incluir o autoloader:

require 'vendor/autoload.php';

use PhpOffice\\PhpSpreadsheet\\Spreadsheet;use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;


Criando um arquivo Excel simples

Vamos ver um exemplo básico: criar um arquivo com cabeçalhos e algumas linhas de dados.

// Cria um novo objeto Spreadsheet$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();

// Define os cabeçalhos$sheet->setCellValue('A1', 'Nome') ->setCellValue('B1', 'Email') ->setCellValue('C1', 'Data de registro');

// Preenche com dados$sheet->setCellValue('A2', 'João Silva') ->setCellValue('B2', 'joao@exemplo.com') ->setCellValue('C2', '2024-01-15');

$sheet->setCellValue('A3', 'Maria Santos') ->setCellValue('B3', 'maria@exemplo.com') ->setCellValue('C3', '2024-02-20');

// Salva o arquivo$writer = new Xlsx($spreadsheet);$writer->save('usuarios.xlsx');

echo "Arquivo usuarios.xlsx criado com sucesso!";

Após executar o script, um arquivo usuarios.xlsx será criado na raiz do projeto, que pode ser aberto no Excel ou Google Sheets.



Lendo um arquivo Excel existente

O PhpSpreadsheet permite ler facilmente dados de qualquer formato. Exemplo de carregamento e exibição do conteúdo:

$inputFileName = 'usuarios.xlsx';$spreadsheet = \\PhpOffice\\PhpSpreadsheet\\IOFactory::load($inputFileName);$sheet = $spreadsheet->getActiveSheet();

// Lê todas as linhas$data = $sheet->toArray();

foreach ($data as $row) { echo implode(' | ', $row) . "";}

O método toArray() retorna um array bidimensional, onde o primeiro elemento é uma linha com índices 0,1,2… Você pode acessar células pelo endereço: $sheet->getCell('A2')->getValue().



Trabalhando com estilos e formatação

Um dos pontos fortes do PhpSpreadsheet é o gerenciamento flexível da aparência da planilha.

$styleArray = [    'font' => [        'bold' => true,        'size' => 12,        'color' => ['argb' => 'FF2E4057'],    ],    'fill' => [        'fillType' => \\PhpOffice\\PhpSpreadsheet\\Style\\Fill::FILL_SOLID,        'startColor' => ['argb' => 'FFD9E2EC'],    ],    'borders' => [        'allBorders' => [            'borderStyle' => \\PhpOffice\\PhpSpreadsheet\\Style\\Border::BORDER_THIN,        ],    ],];

// Aplica o estilo ao intervalo$sheet->getStyle('A1:C1')->applyFromArray($styleArray);

// Largura automática das colunasforeach (range('A','C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true);}


Exportando dados do banco para Excel

Frequentemente é necessário exportar resultados de consultas SQL. Exemplo com PDO:

Recommendations