Come leggere e scrivere file di fogli di calcolo in PHP
Mentre lavoriamo su applicazioni web, spesso ci imbattiamo in una situazione in cui dobbiamo giocare con file di fogli di calcolo. Potremmo voler leggere i dati da fogli di calcolo ed elaborarli. A volte, è anche necessario creare e scrivere file di fogli di calcolo.
In questo articolo, studiamo come leggere e scrivere file di fogli di calcolo in PHP. Il codice che andremo a spiegare funzionerà su 3 tipi di fogli di calcolo: CSV, XLSX e ODS.
Iniziare
Come sviluppatore, vorrei sperimentare diversi pacchetti che possono essere utili per risolvere problemi del mondo reale. Di recente, mi sono imbattuto in un pacchetto chiamato box/beccuccio. Mi è piaciuto il modo in cui la biblioteca ha eseguito i compiti. Utilizzando questa libreria, puoi elaborare file di fogli di calcolo con poche righe di codice.
Questa libreria è in grado di elaborare file di qualsiasi dimensione. È possibile che tu abbia a che fare con un file di grandi dimensioni. Durante il processo, il file di grandi dimensioni non dovrebbe consumare la memoria e crea un problema di prestazioni. La libreria Spout risolve questo problema. Ha bisogno solo di 3 MB di memoria per elaborare qualsiasi file.
Prima di iniziare, il tuo server dovrebbe soddisfare i seguenti requisiti.
- PHP versione 7.2 o successiva
- Estensione PHP
php_zip
abilitata - Estensione PHP
php_xmlreader
abilitata
L’utente può verificare se tutti i requisiti di cui sopra sono soddisfatti sul server utilizzando il phpinfo()
metodo. Crea un file PHP temporaneo e inserisci la seguente istruzione.
Ora esegui questo file PHP sul browser e vedrai le configurazioni PHP come versione, estensioni, ecc. Dovresti vedere xmlreader
e le zip
estensioni sono abilitate come mostrato nello screenshot qui sotto.
Una volta soddisfatti i requisiti, installa il box/spout
pacchetto tramite il comando seguente.
composer require box/spout
Leggere e scrivere file di fogli di calcolo in PHP
Il pacchetto Spout ti consente di interagire con file XLSX, CSV e ODS. Ad esempio, sto scrivendo un codice per i file XLSX.
Crea un file XLSX di esempio users.xlsx
nella directory principale e aggiungi alcune voci fittizie. Nel mio caso, il file ha voci di seguito.
Successivamente, scriverò un codice in un reader.php
file che leggerà users.xlsx
e stamperà i dati al suo interno.
lettore.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();
È così semplice. Vai avanti e provalo.
D’altra parte, possiamo facilmente creare un file XLSX e scriverci i dati. Creiamo un file writer.php
e aggiungiamo il codice qui sotto.
scrittore.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();
Il codice sopra crea un new-users.xlsx
file nella directory principale. Se apri questo file, vedrai che alcune righe (utilizzate nel codice) sono inserite in esso.
Nel caso di file CSV e ODS, è necessario creare un $writer
oggetto come segue.
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
Spero che tu capisca come leggere e scrivere file di fogli di calcolo in PHP. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet
- Come esportare i dati del database MySQL in Excel utilizzando PHP
- Come convertire HTML in PDF in PHP