(PHP, PhpSpreadsheet) Criando planilhas Excel e outros formatos com PHP

matheussesso

Matheus Sesso

Posted on September 29, 2024

(PHP, PhpSpreadsheet) Criando planilhas Excel e outros formatos com PHP

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
Enter fullscreen mode Exit fullscreen mode

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();
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

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";
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

Obs: Certifique-se de possuir instalada a biblioteca Dompdf, caso não possua instale também via Composer:

composer require dompdf/dompdf
Enter fullscreen mode Exit fullscreen mode

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.

💖 💪 🙅 🚩
matheussesso
Matheus Sesso

Posted on September 29, 2024

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related