Comment lire et écrire des fichiers de feuille de calcul en PHP
En travaillant sur des applications Web, nous rencontrons souvent une situation où nous devons jouer avec des fichiers de feuille de calcul. Nous pouvons vouloir lire les données des feuilles de calcul et les traiter. Parfois, il est également nécessaire de créer et d’écrire des fichiers tableur.
Dans cet article, nous étudions comment lire et écrire des fichiers tableur en PHP. Le code que nous allons expliquer fonctionnera sur 3 types de feuilles de calcul – CSV, XLSX et ODS.
Commencer
En tant que développeur, j’aimerais expérimenter différents packages qui peuvent être utiles pour résoudre des problèmes du monde réel. Récemment, je suis tombé sur un paquet appelé box/spout. J’ai aimé la façon dont la bibliothèque effectuait les tâches. En utilisant cette bibliothèque, vous pouvez traiter des fichiers de feuille de calcul avec seulement quelques lignes de code.
Cette bibliothèque est capable de traiter des fichiers de toute taille. Il se peut que vous ayez affaire à un gros fichier. Au cours du processus, le fichier volumineux ne doit pas consommer de mémoire et crée un problème de performances. La bibliothèque de bec résout ce problème. Il n’a besoin que de 3 Mo de mémoire pour traiter n’importe quel fichier.
Avant de commencer, votre serveur doit répondre aux exigences ci-dessous.
- PHP version 7.2 ou supérieure
- Extension PHP
php_zip
activée - Extension PHP
php_xmlreader
activée
L’utilisateur peut vérifier si toutes les exigences ci-dessus sont satisfaites sur votre serveur en utilisant la phpinfo()
méthode. Créez un fichier PHP temporaire et placez-y l’instruction ci-dessous.
Exécutez maintenant ce fichier PHP sur le navigateur et vous verrez des configurations PHP telles que la version, les extensions, etc. Vous devriez voir xmlreader
et les zip
extensions sont activées comme indiqué dans la capture d’écran ci-dessous.
Une fois que vous remplissez les conditions requises, installez le box/spout
package via la commande ci-dessous.
composer require box/spout
Lire et écrire des fichiers de feuille de calcul en PHP
Le package Spout vous permet d’interagir avec les fichiers XLSX, CSV et ODS. À titre d’exemple, j’écris un code pour les fichiers XLSX.
Créez un exemple de fichier XLSX users.xlsx
dans le répertoire racine et ajoutez-y des entrées factices. Dans mon cas, le fichier contient les entrées ci-dessous.
Ensuite, j’écrirai un code dans un reader.php
fichier qui lira users.xlsx
et imprimera les données qu’il contient.
lecteur.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();
C’est aussi simple que cela. Allez-y et essayez-le.
D’un autre côté, nous pouvons facilement créer un fichier XLSX et y écrire des données. Créons un fichier writer.php
et ajoutons le code ci-dessous.
écrivain.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();
Le code ci-dessus crée un new-users.xlsx
fichier dans votre répertoire racine. Si vous ouvrez ce fichier, vous verrez quelques lignes (utilisées dans le code) y être insérées.
Dans le cas des fichiers CSV et ODS, vous devez créer un $writer
objet comme suit.
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
J’espère que vous comprenez comment lire et écrire des fichiers tableur en PHP. J’aimerais entendre vos pensées et suggestions dans la section des commentaires ci-dessous.
Articles Liés
- Comment lire un fichier CSV et Excel en PHP à l’aide de PhpSpreadsheet
- Comment exporter des données de base de données MySQL vers Excel à l’aide de PHP
- Comment convertir du HTML en PDF en PHP