PHP

Обзор расширений для чтения Excel файлов

В статье представлены различные PHP расширения для чтения файлов XLS, XLSX. Описаны их плюсы и минусы, а также примеры чтения в массив PHP.

1

PHPExcel

Проект на githab: https://github.com/PHPOffice/PHPExcel
Скачать архив: PHPExcel-1.8.zip

 

Огромная библиотека читает и формирует фалы xls, xlsx, csv.

  • Для файлов xlsx потребует расширение ZipArchive.
  • Потребляет много памяти.

Пример чтения файла в массив:

require_once __DIR__ . '/PHPExcel-1.8/Classes/PHPExcel/IOFactory.php';

// Файл xlsx
$xls = PHPExcel_IOFactory::load(__DIR__ . '/test.xlsx');

// Первый лист
$xls->setActiveSheetIndex(0);
$sheet = $xls->getActiveSheet();

foreach ($sheet->toArray() as $row) {
   print_r($row);
}
2

SimpleXLSX

Сайт: https://www.phpclasses.org/package/6279-PHP-Parse-and-retrieve-data-from-Excel-XLS-files.html
Скачать архив: simple-xlsx.zip (2017-09-25)

Как видно из названия читает только файлы xlsx.

  • Менее прожорлив к памяти.
  • Не всегда может прочитать файл, например файл сформированный PHPExcel.
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);
}
3

PHP-ExcelReader

Сайт: https://sourceforge.net/projects/phpexcelreader/
Скачать архив: phpExcelReader.zip (исправленный)

  • Прочтет только xls файлы.
  • Есть проблемы с кодировкой.
require_once __DIR__ . '/phpExcelReader/Excel/reader.php';   

$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('UTF-8');

// Файл xls
$data->read(__DIR__ . '/test.xls');

// Первый лист
$sheet = $data->sheets[0]['cells'];

foreach ($sheet as $row) {
    print_r($row);
}
4

PHP-Excel-Reader

Сайт: https://code.google.com/archive/p/php-excel-reader/
Скачать архив: php-excel-reader.zip (2.21)

Форк библиотеки PHP Excel Reader с SourceForge предназначенный для вывода таблицы в HTML.
Например файл example.xls выведет следующим образом:

<style>
table.excel {
    border: 1px solid #CCCCCC;
    border-collapse:collapse;
    font-family:sans-serif;
    font-size:12px;
    margin: 0 auto;
}
table.excel thead th, table.excel tbody th {
    border: 1px solid #CCCCCC;
    text-align: center;
    vertical-align:bottom;
}
table.excel tbody th {
    text-align:center;
    width:20px;
}
table.excel tbody td {
    vertical-align:bottom;
}
table.excel tbody td {
    padding: 0 3px;
    border: 1px solid #EEEEEE;
}
</style>

<?php
require_once __DIR__ . '/php-excel-reader/excel_reader2.php';   
$data = new Spreadsheet_Excel_Reader(__DIR__ . '/example.xls');
echo $data->dump(true, true);
?>

Также у библиотеки есть методы для получения формата и содержания каждой ячейки по отдельности.

5

Nuovo Spreadsheet-Reader

Сайт: https://github.com/nuovo/spreadsheet-reader
Скачать архив: spreadsheet-reader.zip

Читает файлы xlsx, xls, csv и OpenOffice ods. Для чтения xls используется предыдущая библиотека php-excel-reader.

require_once __DIR__ . '/spreadsheet-reader/php-excel-reader/excel_reader2.php';    
require_once __DIR__ . '/spreadsheet-reader/SpreadsheetReader.php';    

// Файл xlsx, xls, csv, ods.
$Reader = new SpreadsheetReader(__DIR__ . '/test.xlsx');

// Номер листа.
$Reader -> ChangeSheet(0);

foreach ($Reader as $Row) {
    print_r($Row);
}
6

PHP-Spreadsheetreader

Сайт: https://code.google.com/archive/p/php-spreadsheetreader/
Скачать архив: SpreadsheetReader.rar

Откроет только файлы в формате XML Excel 2004.

$file = __DIR__ . '/test.xml';

require_once __DIR__ . '/SpreadsheetReader/SpreadsheetReader.php';    
$reader = new SpreadsheetReader;

// Файл xml
$sheets = $reader->read(__DIR__ . '/test.xml');

// Выводим Первый лист
foreach ($sheets[0] as $row) {
   print_r($row);
}
25 марта 2018