WEB и WordPress новости, темы, плагины. Здесь мы делимся советами и лучшими решениями для сайтов.

Как читать и писать файлы электронных таблиц в PHP

510

Работая над веб-приложениями, мы часто сталкиваемся с ситуацией, когда нам нужно поиграть с файлами электронных таблиц. Мы можем читать данные из электронных таблиц и обрабатывать их. Иногда также требуется создавать и записывать файлы электронных таблиц.

В этой статье мы изучаем, как читать и писать файлы электронных таблиц на PHP. Код, который мы собираемся объяснить, будет работать с 3 типами электронных таблиц – CSV, XLSX и ODS.

Начиная

Как разработчик, я хотел бы поэкспериментировать с различными пакетами, которые могут быть полезны для решения реальных проблем. Недавно мне попался пакет под названием box / spout. Мне понравилось, как библиотека выполняла задачи. Используя эту библиотеку, вы можете обрабатывать файлы электронных таблиц с помощью всего нескольких строк кода.

Эта библиотека способна обрабатывать файлы любого размера. Возможно, вы имеете дело с большим файлом. Во время процесса большой файл не должен занимать память и создавать проблемы с производительностью. Библиотека Spout решает эту проблему. Для обработки любого файла требуется всего 3 МБ памяти.

Перед началом работы ваш сервер должен соответствовать следующим требованиям.

  • PHP версии 7.2 или выше
  • Расширение PHP php_zipвключено
  • Расширение PHP php_xmlreaderвключено

Пользователь может проверить, выполняются ли все вышеперечисленные требования на вашем сервере, используя этот phpinfo()метод. Создайте временный файл PHP и поместите в него приведенный ниже оператор.

Теперь запустите этот PHP файл в браузере и вы увидите конфигурации PHP как версии, расширения и т.д. Вы должны увидеть xmlreaderи zipрасширения включены, как показано на скриншоте ниже.

Как читать и писать файлы электронных таблиц в PHP

Как только вы выполните требования, установите box/spoutпакет с помощью приведенной ниже команды.

composer require box/spout

Чтение и запись файлов электронных таблиц в PHP

Пакет Spout позволяет взаимодействовать с файлами XLSX, CSV и ODS. В качестве примера я пишу код для файлов XLSX.

Создайте образец файла XLSX users.xlsxв корневом каталоге и добавьте в него несколько фиктивных записей. В моем случае в файле есть следующие записи.

Как читать и писать файлы электронных таблиц в PHP

Затем я напишу код в reader.phpфайле, который будет читать users.xlsxи печатать данные в нем.

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

Это так просто. Давай, попробуй.

С другой стороны, мы можем легко создать файл XLSX и записать в него данные. Создадим файл writer.phpи добавим в него код ниже.

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

Приведенный выше код создает new-users.xlsxфайл в вашем корневом каталоге. Если вы откроете этот файл, вы увидите, что в него вставлено несколько строк (используемых в коде).

В случае файлов CSV и ODS вам необходимо создать $writerобъект следующим образом.

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

Надеюсь, вы понимаете, как читать и писать файлы электронных таблиц на PHP. Я хотел бы услышать ваши мысли и предложения в разделе комментариев ниже.

Статьи по Теме

Источник записи: artisansweb.net

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее