Hur man läser och skriver kalkylarkfiler i PHP
När vi arbetar med webbapplikationer stöter vi ofta på en situation där vi behöver spela med kalkylarkfiler. Vi kanske vill läsa data från kalkylark och bearbeta den. Ibland är det också nödvändigt att skapa och skriva kalkylarkfiler.
I den här artikeln studerar vi hur man läser och skriver kalkylarkfiler i PHP. Koden vi ska förklara fungerar på tre typer av kalkylark – CSV, XLSX och ODS.
Komma igång
Som utvecklare vill jag experimentera med olika paket som kan vara till hjälp för att lösa verkliga problem. Nyligen kom jag över ett paket som heter box / pip. Jag gillade hur biblioteket utförde uppgifterna. Med detta bibliotek kan du bearbeta kalkylarkfiler med bara några rader kod.
Detta bibliotek kan bearbeta filer i alla storlekar. Det kan vara möjligt att du har att göra med en stor fil. Under processen bör den stora filen inte konsumera minnet och skapa ett prestandaproblem. Tutbiblioteket löser detta problem. Det behöver bara 3 MB minne för att bearbeta någon fil.
Innan du börjar bör din server uppfylla kraven nedan.
- PHP version 7.2 eller senare
- PHP-tillägg
php_zip
aktiverat - PHP-tillägg
php_xmlreader
aktiverat
Användaren kan kontrollera om alla ovanstående krav är uppfyllda på din server med phpinfo()
metoden. Skapa en tillfällig PHP-fil och placera nedanstående uttalande i den.
Kör nu den här PHP-filen i webbläsaren så ser du PHP-konfigurationer som version, tillägg etc. Du bör se xmlreader
och zip
tillägg är aktiverade som visas i skärmdumpen nedan.
När du uppfyller kraven installerar du box/spout
paketet via kommandot nedan.
composer require box/spout
Läs och skriv kalkylarkfiler i PHP
Spout-paketet låter dig interagera med XLSX-, CSV- och ODS-filer. Som ett exempel skriver jag en kod för XLSX-filer.
Skapa ett exempel på en XLSX-fil users.xlsx
i rotkatalogen och lägg till några dummyposter till den. I mitt fall har filen nedanstående poster.
Därefter skriver jag en kod i reader.php
filen som läser users.xlsx
och skriver ut data i den.
reader.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();
Det är så enkelt. Fortsätt och prova det.
Å andra sidan kan vi enkelt skapa en XLSX-fil och skriva data i den. Låt oss skapa en fil writer.php
och lägga till koden nedan i den.
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();
Ovanstående kod skapar en new-users.xlsx
fil i din rotkatalog. Om du öppnar den här filen ser du några rader (används i kod) infogas i den.
När det gäller CSV- och ODS-filer måste du skapa ett $writer
objekt enligt följande.
$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();
Jag hoppas att du förstår hur man läser och skriver kalkylarkfiler i PHP. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Hur man läser CSV- och Excel-filer i PHP med hjälp av PhpSpreadsheet
- Hur man exporterar MySQL-databasdata till Excel med PHP
- Hur man konverterar HTML till PDF i PHP