(PHP, PhpSpreadsheet) Criando planilhas Excel e outros formatos com PHP
Matheus Sesso
Posted on September 29, 2024
Olá pessoal, neste artigo iremos falar um pouco sobre o PhpSpreadsheet, uma biblioteca extremamente completa para lhe auxiliar com demandas para ler e escrever arquivos utilizando PHP.
O PhpSpreadsheet é uma biblioteca PHP que permite ler e escrever arquivos de planilhas em vários formatos, como Excel (xlsx), OpenDocument Spreadsheet (ODS), CSV, entre outros. Com ele, você pode criar, modificar e ler planilhas de forma programática em seus projetos PHP.
Ele é extremamente útil no ramo corporativo, já utilizei em diversos projetos de empresas distintas, portanto eu acho ele algo essencial para quem quer elevar um pouquinho seu nível de desenvolvimento em PHP.
Aqui eu ensinarei o básico para você utilizar a lib, porém vale ressaltar que este é um projeto open-source e bem ativo na comunidade, portanto a manutenção e documentação dele é bem completa, vale a pena dar uma estudada. Para se aprofundar, você pode acessar todas as informações da biblioteca neste link: https://phpspreadsheet.readthedocs.io/
Bom vamos ao que interessa!
Primeiramente existe alguns requisitos para que você possa utilizar o PhpSpreadsheet em seu projeto, são eles:
- Versão do PHP deve ser a 7.4 ou superior;
- Necessariamente possuir o Composer instalado no seu sistema.
Primeiramente você deve acessar a pasta raiz do seu projeto e executar o comando:
composer require phpoffice/phpspreadsheet
Este comando irá adicionar o PhpSpreadsheet como uma dependência em seu projeto e atualizar o arquivo composer.json.
Após a instalação da biblioteca via Composer já é possível utilizar todas as funcionalidades do PhpSpreadsheet, vamos abordar algumas dessas possibilidades:
Criando uma Nova Planilha
Para começar de fato a utilizar o PhpSpreadsheet, você precisa criar uma instância da classe Spreadsheet:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
$spreadsheet = new Spreadsheet();
Após a criação da instância da classe Spreadsheet, você pode começar a manipular a planilha adicionando dados, criando novas folhas, formatando células, entre outras funcionalidades.
Adicionando Dados à Planilha
Para adicionar dados à sua planilha, você precisa acessar a folha ativa (ou criar uma nova) e utilizar o método setCellValue(). Veja o exemplo abaixo:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
// Seleciona a primeira folha da planilha
$sheet = $spreadsheet->getActiveSheet();
// Define o valor das células
$sheet->setCellValue('A1', 'Nome');
$sheet->setCellValue('B1', 'Idade');
$sheet->setCellValue('A2', 'João');
$sheet->setCellValue('B2', 25);
$sheet->setCellValue('A3', 'Maria');
$sheet->setCellValue('B3', 30);
// Salva a planilha em um arquivo .xlsx
$writer = new Xlsx($spreadsheet);
$writer->save('planilha.xlsx');
Neste exemplo acima, criamos uma nova planilha, inserimos alguns dados e salvamos em um arquivo chamado planilha.xlsx.
Lendo uma Planilha Existente
Também é possível ler dados de uma planilha existente utilizando o PhpSpreadsheet. Para isso, utilizaremos a classe IOFactory para carregar o arquivo:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\IOFactory;
$inputFileName = 'planilha.xlsx';
// Carrega o arquivo de planilha
$spreadsheet = IOFactory::load($inputFileName);
// Seleciona a primeira folha
$sheet = $spreadsheet->getActiveSheet();
// Lê os dados das células
$nome1 = $sheet->getCell('A2')->getValue();
$idade1 = $sheet->getCell('B2')->getValue();
echo "Nome: $nome1, Idade: $idade1";
Neste exemplo acima, carregamos a planilha criada anteriormente e lemos os valores das células A2 e B2.
Estilizando a Planilha
O PhpSpreadsheet permite que você aplique estilos às células, como definir fontes, cores, alinhamentos e muito mais. Veja como aplicar alguns estilos básicos:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Define os valores das células
$sheet->setCellValue('A1', 'Produto');
$sheet->setCellValue('B1', 'Preço');
$sheet->setCellValue('A2', 'Camiseta');
$sheet->setCellValue('B2', 29.99);
$sheet->setCellValue('A3', 'Calça');
$sheet->setCellValue('B3', 59.99);
// Aplica estilos ao cabeçalho
$headerStyle = [
'font' => [
'bold' => true,
'color' => ['argb' => 'FFFFFFFF'],
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'startColor' => ['argb' => 'FF0000FF'],
],
];
$sheet->getStyle('A1:B1')->applyFromArray($headerStyle);
// Ajusta a largura das colunas
$sheet->getColumnDimension('A')->setAutoSize(true);
$sheet->getColumnDimension('B')->setAutoSize(true);
// Salva a planilha estilizada
$writer = new Xlsx($spreadsheet);
$writer->save('planilha_estilizada.xlsx');
No código acima, aplicamos um estilo de cabeçalho às células A1 e B1, incluindo negrito e fundo azul com texto branco. Também ajustamos a largura das colunas automaticamente.
Trabalhando com Várias Folhas
Você também pode adicionar múltiplas folhas à sua planilha:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
// Renomeia a folha ativa
$spreadsheet->getActiveSheet()->setTitle('Dados Pessoais');
// Cria uma nova folha
$sheet2 = $spreadsheet->createSheet();
$sheet2->setTitle('Dados Profissionais');
// Define valores na primeira folha
$sheet1 = $spreadsheet->setActiveSheetIndex(0);
$sheet1->setCellValue('A1', 'Nome');
$sheet1->setCellValue('A2', 'Carlos');
// Define valores na segunda folha
$sheet2 = $spreadsheet->setActiveSheetIndex(1);
$sheet2->setCellValue('A1', 'Empresa');
$sheet2->setCellValue('A2', 'Tech Solutions');
// Salva a planilha com múltiplas folhas
$writer = new Xlsx($spreadsheet);
$writer->save('planilha_multiplas_folhas.xlsx');
Neste exemplo, criamos uma planilha com duas folhas: "Dados Pessoais" e "Dados Profissionais", cada uma contendo informações distintas.
Protegendo a Planilha
Você pode proteger sua planilha ou folhas específicas com senha:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Define valores
$sheet->setCellValue('A1', 'Dados Confidenciais');
// Protege a folha ativa
$protection = $sheet->getProtection();
$protection->setPassword('senha_secreta');
$protection->setSheet(true);
// Salva a planilha protegida
$writer = new Xlsx($spreadsheet);
$writer->save('planilha_protegida.xlsx');
Com esse código, a folha será protegida, impedindo alterações sem a que a senha seja definida.
Exportando para Diferentes Formatos
O PhpSpreadsheet permite que você salve sua planilha em diferentes formatos, como CSV, HTML, PDF, entre outros:
Exportando para CSV:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Csv;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Define valores
$sheet->setCellValue('A1', 'Nome');
$sheet->setCellValue('B1', 'Email');
$sheet->setCellValue('A2', 'Ana');
$sheet->setCellValue('B2', 'ana@example.com');
// Salva a planilha em formato CSV
$writer = new Csv($spreadsheet);
$writer->save('contatos.csv');
Exportando para PDF:
Para exportar para PDF, você precisa ter as bibliotecas de renderização de PDF instaladas (mPDF, Dompdf ou TCPDF).
Vou mostrar um exemplo utilizando o Dompdf:
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Dompdf;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Define valores
$sheet->setCellValue('A1', 'Relatório');
$sheet->setCellValue('A2', 'Dados importantes aqui.');
// Configura o writer para PDF usando Dompdf
\PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', Dompdf::class);
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Pdf');
// Salva a planilha em formato PDF
$writer->save('relatorio.pdf');
Obs: Certifique-se de possuir instalada a biblioteca Dompdf, caso não possua instale também via Composer:
composer require dompdf/dompdf
Basicamente é isso pessoal, como vocês puderam ver, o PhpSpreadsheet é uma ferramenta extremamente poderosa e versátil para manipulação de planilhas em PHP.
Com ele, você pode:
- Criar e editar planilhas em diversos formatos.
- Ler dados de planilhas existentes.
- Aplicar estilos e formatações avançadas.
- Trabalhar com múltiplas folhas.
- Proteger planilhas com senha.
- Exportar planilhas para diferentes formatos, incluindo CSV e PDF.
Este artigo abordou os conceitos básicos para você começar a utilizar o PhpSpreadsheet em seus projetos. A biblioteca oferece muito mais funcionalidades avançadas que podem ser exploradas na documentação oficial: https://phpspreadsheet.readthedocs.io/.
Espero que este artigo contribua e tenha sido útil, para que você possa aplicar esses conhecimentos em suas aplicações.
Posted on September 29, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.