Actualités WEB et WordPress, thèmes, plugins. Ici, nous partageons des conseils et les meilleures solutions de sites Web.

Comment lire un fichier CSV et Excel en PHP à l’aide de PhpSpreadsheet

2 125

En travaillant sur des applications Web, nous rencontrons parfois une situation où nous devons importer un fichier CSV ou Excel dans la base de données. C’est un moyen privilégié d’importer des données volumineuses dans la base de données plutôt que de les saisir une par une.

PhpSpreadsheet est la bibliothèque qui vous aide à lire le fichier CSV ou Excel. La bibliothèque prend en charge la lecture et l’écriture de différents types de formats de fichiers. Vous trouverez ci-dessous la capture d’écran des formats de fichiers pris en charge.

Comment lire un fichier CSV et Excel en PHP à l'aide de PhpSpreadsheet

Avant de connaître cette bibliothèque, j’utilisais la méthode fgetcsv pour lire le fichier CSV. Et dans le cas des fichiers Excel, je devais d’abord convertir Excel en CSV, puis le lire à l’aide de la fgetcsv()fonction.

PhpSpreadsheet simplifie cette tâche pour les développeurs. En utilisant PhpSpreadsheet, il est plus facile de gérer les données des fichiers CSV et Excel. De plus, vous n’avez pas besoin de convertir Excel en CSV pour le lire, la bibliothèque lit directement le fichier Excel.

Cela étant dit, voyons comment lire les fichiers CSV et Excel à l’aide de PhpSpreadsheet.

Installation

Pour l’installation de cette bibliothèque, je recommande d’utiliser le Composer. Ouvrez le terminal dans le répertoire racine de votre projet et exécutez la commande :

composer require phpoffice/phpspreadsheet

Dans la prochaine partie du tutoriel, je vais lire les fichiers CSV/Excel et insérer leurs données dans la base de données. Pour cela, j’ai créé un fichier factice qui contient des colonnes et des données comme suit :

Comment lire un fichier CSV et Excel en PHP à l'aide de PhpSpreadsheet

Pour stocker ces détails, j’ai également créé une table ‘users’ dans la base de données.

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;

Pour le tutoriel, j’utilise les données factices ci-dessus. L’utilisateur doit modifier la structure de la table en fonction de son ensemble de données.

Créez un db.phpet ajoutez-y un code pour la connexion à la base de données.

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

Assurez-vous de remplacer les espaces réservés par les valeurs réelles.

Lire le fichier CSV/Excel en PHP

Faisons le codage réel. Tout d’abord, créez un formulaire qui comportera un bouton de saisie de fichier et de soumission. L’utilisateur télécharge son fichier CSV/Excel, appuyez sur le bouton Soumettre. Lors de la soumission, les entrées du fichier téléchargé doivent être insérées dans le tableau « utilisateurs ».

formulaire.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>

Ensuite, le code qui s’exécutera sur la soumission sera le suivant.

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

Dans le code ci-dessus, je découvre le type de fichier et la base sur laquelle je lis le fichier à l’aide des fonctions fournies par la bibliothèque. Vous pouvez en savoir plus à ce sujet sur la documentation officielle ici.

J’espère que vous comprenez comment lire les fichiers CSV et Excel à l’aide de PhpSpreadsheet. J’aimerais entendre vos pensées et suggestions dans la section des commentaires ci-dessous.

Articles Liés

Source d’enregistrement: artisansweb.net

Ce site utilise des cookies pour améliorer votre expérience. Nous supposerons que cela vous convient, mais vous pouvez vous désinscrire si vous le souhaitez. J'accepte Plus de détails