Como ler e escrever arquivos de planilha em PHP
Ao trabalhar em aplicativos da web, muitas vezes nos deparamos com uma situação em que precisamos brincar com arquivos de planilha. Podemos querer ler dados de planilhas e processá-los. Às vezes, também é necessário criar e escrever arquivos de planilha.
Neste artigo, estudamos como ler e escrever arquivos de planilha em PHP. O código que vamos explicar funcionará em 3 tipos de planilhas – CSV, XLSX e ODS.
Começando
Como desenvolvedor, gostaria de experimentar diferentes pacotes que podem ser úteis para resolver problemas do mundo real. Recentemente, encontrei um pacote chamado caixa / bico. Gostei da forma como a biblioteca executou as tarefas. Usando esta biblioteca, você pode processar arquivos de planilha com apenas algumas linhas de código.
Esta biblioteca é capaz de processar arquivos de qualquer tamanho. Pode ser que você esteja lidando com um arquivo grande. Durante o processo, o arquivo grande não deve consumir a memória e cria um problema de desempenho. A biblioteca do Spout resolve esse problema. Ele precisa de apenas 3 MB de memória para processar qualquer arquivo.
Antes de começar, seu servidor deve atender aos requisitos abaixo.
- PHP versão 7.2 ou superior
- Extensão PHP
php_zip
habilitada - Extensão PHP
php_xmlreader
habilitada
O usuário pode verificar se todos os requisitos acima foram atendidos em seu servidor usando o phpinfo()
método. Crie um arquivo PHP temporário e coloque a instrução abaixo nele.
Agora execute este arquivo PHP no navegador e você verá as configurações do PHP como versão, extensões, etc. Você deve ver xmlreader
e as zip
extensões estão habilitadas conforme mostrado na imagem abaixo.
Depois de atender aos requisitos, instale o box/spout
pacote por meio do comando abaixo.
composer require box/spout
Ler e escrever arquivos de planilha em PHP
O pacote Spout permite que você interaja com arquivos XLSX, CSV e ODS. Por exemplo, estou escrevendo um código para arquivos XLSX.
Crie um arquivo XLSX de amostra users.xlsx
no diretório raiz e adicione algumas entradas fictícias a ele. No meu caso, o arquivo tem entradas abaixo.
A seguir, escreverei um código em reader.php
arquivo que lerá users.xlsx
e imprimirá os dados nele.
reader.php
<?php
require_once 'vendor/autoload.php';
use BoxSpoutReaderCommonCreatorReaderEntityFactory;
$filePath = getcwd().'/users.xlsx';
$reader = ReaderEntityFactory::createReaderFromFile($filePath);
$reader->open($filePath);
foreach ($reader->getSheetIterator() as $sheet) {
foreach ($sheet->getRowIterator() as $row) {
$cells = $row->getCells();
foreach ($cells as $cell) {
echo $cell->getValue();
}
}
}
$reader->close();
É simples assim. Vá em frente e experimente.
Por outro lado, podemos criar facilmente um arquivo XLSX e gravar dados nele. Vamos criar um arquivo writer.php
e adicionar o código abaixo nele.
escritor.php
<?php
require_once 'vendor/autoload.php';
use BoxSpoutWriterCommonCreatorWriterEntityFactory;
use BoxSpoutCommonEntityRow;
$filePath = getcwd().'/new-users.xlsx';
$writer = WriterEntityFactory::createXLSXWriter();
$writer->openToFile($filePath);
// Here is data for XLSX file
$data = [
['Name', 'Email'],
['Steve', '[email protected]'],
['David', '[email protected]'],
];
foreach ($data as $d) {
$cells = [
WriterEntityFactory::createCell($d[0]),
WriterEntityFactory::createCell($d[1]),
];
$singleRow = WriterEntityFactory::createRow($cells);
$writer->addRow($singleRow);
}
$writer->close();
O código acima cria um new-users.xlsx
arquivo em seu diretório raiz. Se você abrir este arquivo, verá que algumas linhas (usadas no código) foram inseridas nele.
No caso de arquivos CSV e ODS, você precisa criar um $writer
objeto da seguinte maneira.
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
Espero que você entenda como ler e escrever arquivos de planilha em PHP. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários abaixo.
Artigos relacionados
- Como ler arquivos CSV e Excel em PHP usando planilha PhpSpreadsheet
- Como exportar dados do banco de dados MySQL para Excel usando PHP
- Como converter HTML para PDF em PHP