Парсинг файлов XLS и XLSX - Сергей Житников: Web-разработчик

Парсинг файлов XLS и XLSX

Для парсинга файлов XLS и XLSX на PHP можно использовать библиотеку SimpleXLSX (для XLSX) или SimpleXLS (для XLS). Библиотека SimpleXLSX на PHP предоставляет различные методы для работы с файлами формата XLSX. Ниже их описание.


Методы для открытия и разбора файла XLSX:

SimpleXLSX::parse( $filename, $is_data = false, $debug = false ) // Позволяет открыть и разобрать файл XLSX по указанному пути. Возвращает объект SimpleXLSX, представляющий файл XLSX, или false, если разбор не удался.
SimpleXLSX::parseFile( $filename, $debug = false )               // Позволяет открыть и разобрать файл XLSX по указанному пути. Возвращает объект SimpleXLSX, представляющий файл XLSX, или false, если разбор не удался.
SimpleXLSX::parseData( $data, $debug = false )                   // Позволяет разобрать данные, переданные в виде строки, в формате XLSX. Возвращает объект SimpleXLSX, представляющий данные, или false, если разбор не удался.

Методы для работы с содержимым файла:

$xlsx->rows($worksheetIndex = 0, $limit = 0)     // Возвращает все строки указанного листа в виде массива.
$xlsx->readRows($worksheetIndex = 0, $limit = 0) // Позволяет читать строки указанного листа по одной, используя генератор. Полезен для работы с большими файлами XLSX.
$xlsx->toHTML($worksheetIndex = 0, $limit = 0)   // Преобразует содержимое указанного листа в HTML-строку.

Расширенные методы для работы с содержимым файла:

$xlsx->rowsEx($worksheetIndex = 0, $limit = 0)     // Возвращает все строки указанного листа в виде массива, включая информацию о стилях.
$xlsx->readRowsEx($worksheetIndex = 0, $limit = 0) // Позволяет читать строки указанного листа вместе с информацией о стилях по одной, используя генератор. Полезен для работы с большими файлами XLSX.
$xlsx->toHTMLEx($worksheetIndex = 0, $limit = 0)   // Преобразует содержимое указанного листа в HTML-строку, включая информацию о стилях.

Методы для получения метаданных файла:

$xlsx->dimension($worksheetIndex):array [num_cols, num_rows] // Возвращает информацию о размере указанного листа в виде массива [количество столбцов, количество строк].
$xlsx->sheetsCount():int                                     // Возвращает количество листов в файле.
$xlsx->sheetNames():array                                    // Возвращает список имен листов в файле.
$xlsx->sheetName($worksheetIndex):string                     // Возвращает имя указанного листа.
$xlsx->sheetMeta($worksheetIndex = null):array               // Возвращает метаданные указанного листа или всех листов, если не указан индекс листа.
$xlsx->isHiddenSheet($worksheetIndex):bool                   // Проверяет, скрыт ли указанный лист.
$xlsx->getStyles():array                                     // Возвращает информацию обо всех стилях, используемых в файле.

Эти методы позволяют удобно работать с файлами формата XLSX & XLS, извлекая информацию о содержимом, метаданных и стилях файла.

Пример работы с библиотекой SimpleXLSX:

require_once __DIR__ . '/simple-xlsx/simplexlsx.class.php';

// Файл xlsx
$xlsx = new SimpleXLSX(__DIR__ . '/test.xlsx');

// Первый лист
$sheet = $xlsx->rows(1);

foreach ($sheet as $row) {
    print_r($row);
}
if ( $xls = SimpleXLS::parse('book.xls') ) {
    echo '<table border="1" cellpadding="3" style="border-collapse: collapse">';
    foreach( $xls->rows() as $r ) {
        echo '<tr><td>'.implode('</td><td>', $r ).'</td></tr>';
    }
    echo '</table>';
} else {
    echo SimpleXLS::parseError();
}

Другие примеры можно найти на Github в репозитории библиотеки.

Сергей Житников
Об авторе

Сергей Житников - Веб-разработчик

Занимаюсь веб-разработкой более 5 лет. Специализируюсь на создании адаптивных сайтов и веб-приложений на HTML5, CSS3 и JavaScript. Работаю с популярными CMS и фреймворками, а также уделяю большое внимание оптимизации производительности и чистоте кода.

Есть проект или идея? Буду рад помочь!

Связаться со мной

Последние статьи

19.06.2026
В статье собрал шпаргалку по основным компонентам Bitrix: bitrix:menu, news.list, news.detail, sale.basket.basket.line, main.include и breadcrumb. Разобрал настройку меню из разделов и элементов инфоблока через файлы .menu_ext.php, показываю полные конфигурации компонентов с пояснениями ключевых параметров. Готовые примеры для быстрого копирования и использования в проектах.
19.06.2026
Купоны в Битрикс неразрывно связаны с правилами работы с корзиной — без привязки к правилу они не сработают, а правило без купонов применит скидку на все товары. Разбираю создание купонов через DiscountCouponTable::add(): обязательные и опциональные поля, типы купонов, флаги активности. Показываю примеры работы с датами через объект DateTime (прибавление дней, месяцев и минут).
19.06.2026
Разбираю готовые примеры работы с изображениями в PHP: сохранение на сервер, вывод в браузер, рисование линий и прямоугольников. Отдельно — нюансы с форматами файлов (JPEG/PNG) и поддержкой кириллицы через шрифты.