✅ Notícias, temas e plug-ins da WEB e do WordPress. Aqui compartilhamos dicas e as melhores soluções para sites.

Como ler arquivos CSV e Excel em PHP usando planilha PhpSpreadsheet

1.842

Ao trabalhar em aplicativos da web, às vezes nos deparamos com uma situação em que precisamos importar um arquivo CSV ou Excel para o banco de dados. É a forma preferida de importar grandes dados no banco de dados, em vez de inseri-los um por um.

PhpSpreadsheet é a biblioteca que o ajuda a ler o arquivo CSV ou Excel. A biblioteca oferece suporte para leitura e gravação de diferentes tipos de formatos de arquivo. Abaixo está a captura de tela dos formatos de arquivo suportados.

Como ler arquivos CSV e Excel em PHP usando planilha PhpSpreadsheet

Antes de conhecer esta biblioteca, eu estava usando o método fgetcsv para ler o arquivo CSV. E no caso de arquivos do Excel, eu precisava primeiro converter o Excel para CSV e depois ler usando a fgetcsv()função.

PhpSpreadsheet simplifica essa tarefa para desenvolvedores. Usando o PhpSpreadsheet, é mais fácil lidar com os dados de arquivos CSV e Excel. Além disso, você não precisa converter o Excel em CSV para lê-lo, a biblioteca lê diretamente o arquivo do Excel.

Dito isso, vamos dar uma olhada em como ler arquivos CSV e Excel usando PhpSpreadsheet.

Instalação

Para instalação desta biblioteca, recomendo usar o Composer. Abra o terminal no diretório raiz do seu projeto e execute o comando:

composer require phpoffice/phpspreadsheet

Na próxima parte do tutorial, irei ler arquivos CSV / Excel e inserir seus dados no banco de dados. Para isso, criei um arquivo fictício que contém colunas e dados da seguinte forma:

Como ler arquivos CSV e Excel em PHP usando planilha PhpSpreadsheet

Para armazenar esses detalhes, também criei uma tabela ‘usuários’ no banco de dados.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Para o bem do tutorial, estou usando os dados fictícios acima. O usuário deve alterar a estrutura da tabela de acordo com seu conjunto de dados.

Crie um db.phpe adicione um código para conexão de banco de dados nele.

db.php

<?php
$db_host = 'DB_HOST';
$db_username = 'DB_USERNAME';
$db_password = 'DB_PASSWORD';
$db_name = 'DB_NAME';
  
$db = new mysqli($db_host, $db_username, $db_password, $db_name);
  
if($db->connect_error){
    die("Unable to connect database: ". $db->connect_error);
}

Certifique-se de substituir os marcadores de posição pelos valores reais.

Ler arquivo CSV / Excel em PHP

Vamos fazer a codificação real. Primeiro, crie um formulário que terá um botão de entrada e envio de arquivo. O usuário carrega seu arquivo CSV / Excel, clica no botão enviar. No envio, as entradas do arquivo carregado devem ser inseridas na tabela de ‘usuários’.

form.php

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File Upload</label>
        <input type="file" name="file" class="form-control" id="exampleInputFile">
    </div>
    <button type="submit" name="submit" class="btn btn-primary">Submit</button>
</form>

A seguir, o código que será executado no envio será o seguinte.

<?php
require_once 'vendor/autoload.php';
require_once 'db.php';
  
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetReaderCsv;
use PhpOfficePhpSpreadsheetReaderXlsx;
  
if (isset($_POST['submit'])) {
 
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     
    if(isset($_FILES['file']['name']) && in_array($_FILES['file']['type'], $file_mimes)) {
     
        $arr_file = explode('.', $_FILES['file']['name']);
        $extension = end($arr_file);
     
        if('csv' == $extension) {
            $reader = new PhpOfficePhpSpreadsheetReaderCsv();
        } else {
            $reader = new PhpOfficePhpSpreadsheetReaderXlsx();
        }
 
        $spreadsheet = $reader->load($_FILES['file']['tmp_name']);
 
        $sheetData = $spreadsheet->getActiveSheet()->toArray();
 
        if (!empty($sheetData)) {
            for ($i=1; $i<count($sheetData); $i++) {
                $name = $sheetData[$i][1];
                $email = $sheetData[$i][2];
                $db->query("INSERT INTO USERS(name, email) VALUES('$name', '$email')");
            }
        }
    }
}
?>

No código acima, estou descobrindo o tipo de arquivo e a base disso, estou lendo o arquivo usando as funções fornecidas pela biblioteca. Você pode ler mais sobre isso na documentação oficial aqui.

Espero que você entenda como ler arquivos CSV e Excel usando o PhpSpreadsheet. Eu gostaria de ouvir seus pensamentos e sugestões na seção de comentários abaixo.

Artigos relacionados

Fonte de gravação: artisansweb.net

Este site usa cookies para melhorar sua experiência. Presumiremos que você está ok com isso, mas você pode cancelar, se desejar. Aceitar Consulte Mais informação