✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ssä

21

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_zipkäytössä
  • PHP-laajennus php_xmlreaderkä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ä xmlreaderja ziplaajennukset olla käytössä alla olevan kuvakaappauksen mukaisesti.

Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ssä

Kun olet täyttänyt vaatimukset, asenna box/spoutpaketti 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.xlsxjuurihakemistoon ja lisää siihen joitain nuken merkintöjä. Minun tapauksessani tiedostossa on alla olevia merkintöjä.

Laskentataulukotiedostojen lukeminen ja kirjoittaminen PHP: ssä

Seuraavaksi kirjoitan koodin reader.phptiedostoon, joka lukee users.xlsxja 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.phpja 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.xlsxtiedoston juurihakemistoon. Jos avaat tämän tiedoston, näet siihen muutaman rivin (käytetään koodissa).

CSV- ja ODS-tiedostojen tapauksessa sinun on luotava $writerobjekti 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.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja