PHP:
Trabalhando com CSV
Como fazer:
O PHP oferece funções integradas para manipulação de arquivos CSV, tornando direto ler e escrever nesses arquivos sem necessidade de bibliotecas de terceiros. Aqui estão exemplos para começar:
Lendo um Arquivo CSV
Você pode abrir um arquivo CSV e ler seu conteúdo usando fopen()
em combinação com fgetcsv()
:
<?php
$nomeArquivo = 'data.csv';
$manipulador = fopen($nomeArquivo, "r");
if ($manipulador !== FALSE) {
while (($dados = fgetcsv($manipulador, 1000, ",")) !== FALSE) {
$num = count($dados);
echo "Número de campos na linha: $num\n";
for ($c = 0; $c < $num; $c++) {
echo $dados[$c] . "\n";
}
}
fclose($manipulador);
}
?>
Este script imprime o número de campos de cada linha seguido pelo conteúdo de cada campo.
Escrevendo em um Arquivo CSV
Para escrever em um arquivo CSV, use fopen()
no modo de escrita (w
) e fputcsv()
:
<?php
$lista = [
['ID', 'Nome', 'Email'],
[1, 'John Doe', '[email protected]'],
[2, 'Jane Doe', '[email protected]']
];
$manipulador = fopen('users.csv', 'w');
foreach ($lista como $linha) {
fputcsv($manipulador, $linha);
}
fclose($manipulador);
?>
Este script cria um arquivo chamado users.csv
e escreve o cabeçalho e duas linhas de dados nele.
Usando uma Biblioteca: League\Csv
Para manipulação mais avançada de CSV, a biblioteca League\Csv
oferece um robusto conjunto de funcionalidades. Depois de instalá-la via Composer (composer require league/csv
), você pode usá-la para ler e escrever dados CSV de maneira mais flexível.
Lendo com League\Csv
<?php
require 'vendor/autoload.php';
use League\Csv\Reader;
$csv = Reader::createFromPath('data.csv', 'r');
$csv->setHeaderOffset(0); // Defina se você deseja usar a primeira fila como cabeçalho
$resultados = $csv->getRecords();
foreach ($resultados as $linha) {
print_r($linha);
}
?>
Este script lê data.csv
, tratando a primeira linha como cabeçalhos de colunas e imprime cada linha como um array associativo.
Escrevendo com League\Csv
<?php
require 'vendor/autoload.php';
use League\Csv\Writer;
$csv = Writer::createFromPath('users_new.csv', 'w+');
$csv->insertOne(['ID', 'Nome', 'Email']);
$csv->insertAll([
[3, 'Alex Doe', '[email protected]'],
[4, 'Anna Smith', '[email protected]']
]);
echo "Escrito em users_new.csv com sucesso.";
?>
Isso cria users_new.csv
e escreve uma linha de cabeçalho seguida por duas linhas de dados.