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

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

575

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

В этой статье мы изучаем, как читать и писать файлы электронных таблиц на 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 для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее