✅ Notizie, temi, plugin WEB e WordPress. Qui condividiamo suggerimenti e le migliori soluzioni per siti web.

Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet

471

Durante il lavoro su applicazioni Web, a volte ci imbattiamo in una situazione in cui è necessario importare un file CSV o Excel nel database. È un modo preferito per importare dati di grandi dimensioni nel database piuttosto che inserirli uno per uno.

PhpSpreadsheet è la libreria che ti aiuta a leggere il file CSV o Excel. La libreria fornisce supporto per la lettura e la scrittura di diversi tipi di formati di file. Di seguito è riportato lo screenshot dei formati di file supportati.

Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet

Prima di conoscere questa libreria, stavo usando il metodo fgetcsv per leggere il file CSV. E nel caso dei file Excel, dovevo prima convertire Excel in CSV e poi leggerlo usando la fgetcsv()funzione.

PhpSpreadsheet semplifica questo compito per gli sviluppatori. Utilizzando PhpSpreadsheet, è più facile gestire i dati da file CSV ed Excel. Inoltre, non è necessario convertire Excel in CSV per leggerlo, la libreria legge direttamente il file Excel.

Detto questo, diamo un’occhiata a come leggere i file CSV ed Excel usando PhpSpreadsheet.

Installazione

Per l’installazione di questa libreria, consiglio di utilizzare Composer. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:

composer require phpoffice/phpspreadsheet

Nella parte successiva del tutorial, leggerò i file CSV/Excel e inserirò i loro dati nel database. Per questo, ho creato un file fittizio che contiene colonne e dati come segue:

Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet

Per memorizzare questi dettagli, ho anche creato una tabella "utenti" nel database.

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;

Per motivi di tutorial, sto usando i dati fittizi di cui sopra. L’utente deve modificare la struttura della tabella in base al proprio set di dati.

Crea un db.phpe aggiungi un codice per la connessione al database in esso.

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);
}

Assicurati di sostituire i segnaposto con i valori effettivi.

Leggi file CSV/Excel in PHP

Facciamo la codifica vera e propria. Innanzitutto, crea un modulo che avrà un input di file e un pulsante di invio. L’utente carica il proprio file CSV/Excel, premere il pulsante di invio. Al momento dell’invio, le voci del file caricato devono essere inserite nella tabella "utenti".

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>

Successivamente, il codice che verrà eseguito sull’invio sarà il seguente.

<?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')");
            }
        }
    }
}
?>

Nel codice sopra, sto scoprendo il tipo di file e la base di ciò che sto leggendo il file utilizzando le funzioni fornite dalla libreria. Puoi leggere di più su questo nella documentazione ufficiale qui.

Spero che tu capisca come leggere i file CSV ed Excel usando PhpSpreadsheet. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.

articoli Correlati

Fonte di registrazione: artisansweb.net

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More