✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як читати та писати файли електронних таблиць у PHP

24

Працюючи над веб-додатками, ми часто стикаємось із ситуацією, коли нам потрібно грати з файлами електронних таблиць. Можливо, ми захочемо прочитати дані з електронних таблиць та обробити їх. Іноді також потрібно створювати та писати файли електронних таблиць.

У цій статті ми вивчаємо, як читати та писати файли електронних таблиць у PHP. Код, який ми будемо пояснювати, працюватиме на 3 типах електронних таблиць – CSV, XLSX та ODS.

Починаємо

Як розробник, я хотів би експериментувати з різними пакетами, які можуть бути корисними для вирішення реальних проблем. Нещодавно я натрапив на пакет з назвою box / 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та друкувати дані в ньому.

рідер.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. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі