✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur man läser och skriver kalkylarkfiler i PHP

16

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_zipaktiverat
  • PHP-tillägg php_xmlreaderaktiverat

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 xmlreaderoch ziptillägg är aktiverade som visas i skärmdumpen nedan.

Hur man läser och skriver kalkylarkfiler i PHP

När du uppfyller kraven installerar du box/spoutpaketet 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.xlsxi rotkatalogen och lägg till några dummyposter till den. I mitt fall har filen nedanstående poster.

Hur man läser och skriver kalkylarkfiler i PHP

Därefter skriver jag en kod i reader.phpfilen som läser users.xlsxoch 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.phpoch 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.xlsxfil 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 $writerobjekt 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

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer