Як читати та писати файли електронних таблиць у PHP
Працюючи над веб-додатками, ми часто стикаємось із ситуацією, коли нам потрібно грати з файлами електронних таблиць. Можливо, ми захочемо прочитати дані з електронних таблиць та обробити їх. Іноді також потрібно створювати та писати файли електронних таблиць.
У цій статті ми вивчаємо, як читати та писати файли електронних таблиць у PHP. Код, який ми будемо пояснювати, працюватиме на 3 типах електронних таблиць – CSV, XLSX та ODS.
Починаємо
Як розробник, я хотів би експериментувати з різними пакетами, які можуть бути корисними для вирішення реальних проблем. Нещодавно я натрапив на пакет з назвою box / spout. Мені сподобалось, як бібліотека виконувала завдання. За допомогою цієї бібліотеки ви можете обробляти файли електронних таблиць лише за допомогою декількох рядків коду.
Ця бібліотека здатна обробляти файли будь-якого розміру. Можливо, ви маєте справу з великим файлом. Під час процесу великий файл не повинен споживати пам’ять і створює проблеми з продуктивністю. Бібліотека носика вирішує цю проблему. Для обробки будь-якого файлу йому потрібно лише 3 Мб пам’яті.
Перед початком роботи ваш сервер повинен відповідати наведеним нижче вимогам.
- PHP версії 7.2 або новішої
- Розширення PHP
php_zip
увімкнено - Розширення PHP
php_xmlreader
увімкнено
Користувач може перевірити, чи виконуються на вашому сервері всі вищезазначені вимоги, використовуючи phpinfo()
метод. Створіть тимчасовий PHP-файл і розмістіть у ньому наведену нижче заяву.
Тепер запустіть цей PHP-файл у браузері, і ви побачите конфігурації PHP, такі як версія, розширення тощо. Ви повинні побачити, xmlreader
і zip
розширення ввімкнено, як показано на знімку екрана нижче.
Після виконання вимог встановіть box/spout
пакет за допомогою команди нижче.
composer require box/spout
Читання та запис електронних таблиць у PHP
Пакет Spout дозволяє взаємодіяти з файлами XLSX, CSV та ODS. Як приклад, я пишу код для файлів XLSX.
Створіть зразок файлу XLSX users.xlsx
у кореневій директорії та додайте до нього кілька фіктивних записів. У моєму випадку у файлі є записи нижче.
Далі я напишу код у reader.php
файлі, який буде зчитувати users.xlsx
та друкувати дані в ньому.
рідер.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
і додамо в нього код нижче.
письменник.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. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.
Пов’язані статті
- Як читати файли CSV та Excel у PHP за допомогою PhpSpreadsheet
- Як експортувати дані бази даних MySQL у Excel за допомогою PHP
- Як конвертувати HTML в PDF у PHP