...
✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Jak czytać i zapisywać pliki arkuszy kalkulacyjnych w PHP

26

Podczas pracy nad aplikacjami webowymi często spotykamy się z sytuacją, w której musimy pobawić się plikami arkusza kalkulacyjnego. Możemy chcieć odczytać dane z arkuszy kalkulacyjnych i je przetworzyć. Czasami wymagane jest również tworzenie i zapisywanie plików arkuszy kalkulacyjnych.

W tym artykule dowiemy się, jak czytać i pisać pliki arkuszy kalkulacyjnych w PHP. Kod, który wyjaśnimy, będzie działał na 3 typach arkuszy kalkulacyjnych – CSV, XLSX i ODS.

Pierwsze kroki

Jako programista chciałbym poeksperymentować z różnymi pakietami, które mogą być pomocne w rozwiązywaniu rzeczywistych problemów. Ostatnio natknąłem się na paczkę o nazwie box/sout. Podobał mi się sposób, w jaki biblioteka wykonywała zadania. Korzystając z tej biblioteki, możesz przetwarzać pliki arkuszy kalkulacyjnych za pomocą zaledwie kilku wierszy kodu.

Ta biblioteka jest w stanie przetwarzać pliki o dowolnym rozmiarze. Możliwe, że masz do czynienia z dużym plikiem. Podczas tego procesu duży plik nie powinien zużywać pamięci i powodować problemy z wydajnością. Biblioteka wylewek rozwiązuje ten problem. Potrzebuje tylko 3 MB pamięci do przetworzenia dowolnego pliku.

Zanim zaczniesz, Twój serwer powinien spełnić poniższe wymagania.

  • PHP w wersji 7.2 lub nowszej
  • Rozszerzenie PHP php_zipwłączone
  • Rozszerzenie PHP php_xmlreaderwłączone

Użytkownik może sprawdzić, czy wszystkie powyższe wymagania są spełnione na Twoim serwerze za pomocą tej phpinfo()metody. Utwórz tymczasowy plik PHP i umieść w nim poniższą instrukcję.

Teraz uruchom ten plik PHP w przeglądarce, a zobaczysz konfiguracje PHP, takie jak wersja, rozszerzenia itp. Powinieneś zobaczyć, xmlreadera ziprozszerzenia są włączone, jak pokazano na zrzucie ekranu poniżej.

Jak czytać i zapisywać pliki arkuszy kalkulacyjnych w PHP

Po spełnieniu wymagań zainstaluj box/spoutpakiet za pomocą poniższego polecenia.

composer require box/spout

Odczytywanie i zapisywanie plików arkuszy kalkulacyjnych w PHP

Pakiet Spout pozwala na interakcję z plikami XLSX, CSV i ODS. Jako przykład piszę kod dla plików XLSX.

Utwórz przykładowy plik XLSX users.xlsxw katalogu głównym i dodaj do niego kilka fikcyjnych wpisów. W moim przypadku plik ma poniżej wpisy.

Jak czytać i zapisywać pliki arkuszy kalkulacyjnych w PHP

Następnie napiszę w reader.phppliku kod, który odczyta users.xlsxi wydrukuje zawarte w nim dane.

czytnik.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();

To takie proste. Śmiało i spróbuj.

Z drugiej strony możemy łatwo stworzyć plik XLSX i zapisywać do niego dane. Stwórzmy plik writer.phpi dodajmy w nim kod poniżej.

pisarz.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();

Powyższy kod tworzy new-users.xlsxplik w katalogu głównym. Jeśli otworzysz ten plik, zobaczysz kilka wierszy (używanych w kodzie) wstawionych do niego.

W przypadku plików CSV i ODS należy utworzyć $writerobiekt w następujący sposób.

$filePath = getcwd().'/new-users.ods';
$writer = WriterEntityFactory::createODSWriter();
 
$filePath = getcwd().'/new-users.csv';
$writer = WriterEntityFactory::createCSVWriter();

Mam nadzieję, że rozumiesz, jak czytać i pisać pliki arkuszy kalkulacyjnych w PHP. Chciałbym usłyszeć wasze przemyślenia i sugestie w sekcji komentarzy poniżej.

Powiązane artykuły

Źródło nagrywania: artisansweb.net

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów