Kuidas arvutustabeli faile lugeda ja kirjutada PHP-s
Veebirakenduste kallal töötades satume sageli olukorda, kus peame mängima arvutustabeli failidega. Võime soovida lugeda arvutustabelite andmeid ja neid töödelda. Mõnikord on vajalik ka arvutustabelifailide loomine ja kirjutamine.
Selles artiklis uurime, kuidas arvutustabelifaile lugeda ja kirjutada PHP-s. Kood, mida selgitame, töötab kolme tüüpi arvutustabelites – CSV, XLSX ja ODS.
Alustamine
Arendajana tahaksin katsetada erinevaid pakette, mis võivad olla abiks reaalsete probleemide lahendamisel. Hiljuti puutusin kokku pakiga, mille nimi oli kast / tila. Mulle meeldis, kuidas raamatukogu ülesandeid täitis. Selle teegi abil saate töödelda arvutustabelifaile vaid mõne koodireaga.
See teek on võimeline töötlema mis tahes suurusega faile. Võib juhtuda, et tegemist on suure failiga. Protsessi ajal ei tohiks suur fail mälu tarbida ja tekitab jõudluse probleemi. Tila raamatukogu lahendab selle probleemi. Mis tahes faili töötlemiseks vajab see ainult 3 MB mälu.
Enne alustamist peaks teie server vastama allpool toodud nõuetele.
- PHP versioon 7.2 või uuem
- PHP laiendus on
php_zip
lubatud - PHP laiendus on
php_xmlreader
lubatud
Kasutaja saab phpinfo()
meetodi abil kontrollida, kas kõik ülaltoodud nõuded on teie serveris täidetud. Looge ajutine PHP-fail ja asetage sellesse järgmine allkiri.
Nüüd käivitage see PHP-fail brauseris ja näete PHP-konfiguratsioone, nagu versioon, laiendused jne. Peaksite nägema xmlreader
ja zip
laiendused on lubatud, nagu on näidatud alloleval ekraanipildil.
Kui olete nõuetele vastanud, installige box/spout
pakett alloleva käsu kaudu.
composer require box/spout
Arvutustabeli failide lugemine ja kirjutamine PHP-s
Spout-pakett võimaldab teil suhelda XLSX-, CSV- ja ODS-failidega. Näitena kirjutan koodi XLSX-failidele.
Looge users.xlsx
juurkataloogis XLSX-faili näidis ja lisage sellele mõned näiv kirjed. Minu puhul on fail allpool kirjeid.
Järgmisena kirjutan reader.php
faili koodi, mis loeb users.xlsx
ja prindib selles olevad andmed.
lugeja.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();
Nii lihtne see ongi. Edasi ja proovige seda.
Teiselt poolt saame hõlpsalt luua XLSX-faili ja sinna andmed kirjutada. Loome faili writer.php
ja lisame sellesse koodi allpool.
kirjanik.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();
Ülaltoodud kood loob new-users.xlsx
faili teie juurkataloogi. Selle faili avamisel näete, et sellesse on sisestatud paar rida (kasutatakse koodis).
CSV- ja ODS-failide puhul peate looma $writer
objekti järgmiselt.
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
Loodan, et saate aru, kuidas arvutustabelifaile PHP-s lugeda ja kirjutada. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.