Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ssä
Verkkosovellusten parissa työskentelemme usein tilanteessa, jossa meidän on pelattava taulukkolaskentatiedostoilla. Saatamme haluta lukea tietoja taulukoista ja käsitellä niitä. Joskus vaaditaan myös laskentataulukoiden luominen ja kirjoittaminen.
Tässä artikkelissa tutkitaan laskentataulukoiden lukemista ja kirjoittamista PHP: ssä. Koodi, jonka selitämme, toimii 3 tyyppisessä laskentataulukossa – CSV, XLSX ja ODS.
Päästä alkuun
Kehittäjänä haluaisin kokeilla erilaisia paketteja, joista voi olla apua reaalimaailman ongelmien ratkaisemisessa. Viime aikoina törmäsin pakettiin nimeltä laatikko / nokka. Pidin siitä, miten kirjasto suoritti tehtävät. Tämän kirjaston avulla voit käsitellä laskentataulukotiedostoja vain muutamalla rivillä koodia.
Tämä kirjasto pystyy käsittelemään kaiken kokoisia tiedostoja. Saattaa olla mahdollista, että käsittelet suurta tiedostoa. Prosessin aikana suuri tiedosto ei saisi kuluttaa muistia ja luo suorituskykyongelman. Juoksukirjasto ratkaisee tämän ongelman. Tiedostojen käsittelyyn tarvitaan vain 3 Mt muistia.
Ennen aloittamista palvelimesi tulee täyttää alla olevat vaatimukset.
- PHP-versio 7.2 tai uudempi
- PHP-laajennus
php_zip
käytössä - PHP-laajennus
php_xmlreader
käytössä
Käyttäjä voi tarkistaa, täyttyvätkö kaikki yllä olevat vaatimukset palvelimellasi tämän phpinfo()
menetelmän avulla. Luo väliaikainen PHP-tiedosto ja aseta alla oleva käsky siihen.
Suorita nyt tämä PHP-tiedosto selaimessa ja näet PHP-kokoonpanot, kuten version, laajennukset jne. Sinun pitäisi nähdä xmlreader
ja zip
laajennukset olla käytössä alla olevan kuvakaappauksen mukaisesti.
Kun olet täyttänyt vaatimukset, asenna box/spout
paketti alla olevan komennon avulla.
composer require box/spout
Lukea ja kirjoittaa laskentataulukotiedostoja PHP: ssä
Spout-paketin avulla voit olla vuorovaikutuksessa XLSX-, CSV- ja ODS-tiedostojen kanssa. Esimerkiksi kirjoitan koodin XLSX-tiedostoille.
Luo XLSX-esimerkkitiedosto users.xlsx
juurihakemistoon ja lisää siihen joitain nuken merkintöjä. Minun tapauksessani tiedostossa on alla olevia merkintöjä.
Seuraavaksi kirjoitan koodin reader.php
tiedostoon, joka lukee users.xlsx
ja tulostaa siinä olevat tiedot.
lukija.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();
Se on niin yksinkertaista. Mene eteenpäin ja kokeile sitä.
Toisaalta voimme helposti luoda XLSX-tiedoston ja kirjoittaa siihen tietoja. Luodaan tiedosto writer.php
ja lisätään koodi sen alle.
writer.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();
Yllä oleva koodi luo new-users.xlsx
tiedoston juurihakemistoon. Jos avaat tämän tiedoston, näet siihen muutaman rivin (käytetään koodissa).
CSV- ja ODS-tiedostojen tapauksessa sinun on luotava $writer
objekti seuraavasti.
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
Toivon, että ymmärrät kuinka lukea ja kirjoittaa laskentataulukoita PHP: ssä. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.