Для парсинга файлов 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 и фреймворками, а также уделяю большое внимание оптимизации производительности и чистоте кода.
Есть проект или идея? Буду рад помочь!
Связаться со мной