PHPExcel — библиотека, предназначенная для обработки данных формата MS Excel. С её помощью можно производить чтение и запись информации в файлы, форматировать их содержимое, выполнять операции с формулами, стилями и т.д.
Для работы PHPExcel требуется версия PHP 5.2 или выше, а так же наличие подключенных расширений ZIP, XML и GD2.
Примечание: расширение php_zip нужно только при использовании классов PHPExcel_Reader_Excel2007, PHPExcel_Writer_Excel2007 и PHPExcel_Reader_OOCalc. То есть если вы хотите использовать PHPExcel для полноценной работы с файлами форматов .xlsx или .ods, то вам потребуется zip-расширение.
Возможности библиотеки PHPExcel:
1. PHPExcel может читать различные форматы файлов электронных таблиц:
- Excel5
- Excel2003XML
- Excel2007
- OOCalc
- SYLK
- Gnumeric
- CSV
2. Создание и обработка документов средствами PHP
Установка PHPExcel:
1) Скачать библиотеку с официального сайта https://github.com/PHPOffice/PHPExcel
2) В скачанном архиве, из папки classes скопировать содержимое в корень сайта
Состав Архива:
/classes // Каталог библиотеки PHPExcel
/classess/PHPExcel/ // Каталог классов библиотеки PHPExcel
/classess/PHPExcel.php // Файл для include?содержит ключевые методы для обработки данных
/documentation // Полная документация по использованию библиотеки
/license.txt // Лицензионное соглашение
/install.txt // Краткая инструкция по установке
/examples // Каталог с примерами по использованию PHPExcel
/changelog.txt // Список изменений в текущей версии
Пример чтения Excel файла при помощи класса PHPExcel
Для чтения данных с Excel файла необходимо подключить файл библиотеки PHPExcel и используется метод load() класса PHPExcel_IOFactory. Этот метод собирает данные всех со всех листов текущего документа:
require_once '/путь/до/файла/PHPExcel.php';
$excel = PHPExcel_IOFactory::load('/путь/до/файла/simple.xlsx');
Далее формируем массив из всех листов Excel файла с помощью цикла:
Foreach($excel ->getWorksheetIterator() as $worksheet) {
$lists[] = $worksheet->toArray();
}
Вывод сформированного массива в виде HTML таблиц(ы):
foreach($lists as $list){
echo '<table border="1">';
// Перебор строк
foreach($list as $row){
echo '<tr>';
// Перебор столбцов
foreach($row as $col){
echo '<td>'.$col.'</td>';
}
echo '</tr>';
}
echo '</table>';
}
Основные методы и свойства класса PHPExcel
Класс PHPExcel — это ядро PHPExcel. Он содержит ссылки на содержащиеся листы, параметры безопасности документов и мета-данные документов. Помимо вышеизложенного, этот класс включает в себя множество других полезных методов для обработки получаемых данных. Некоторые из них будут описаны ниже.
getSheetCount() — возвратит количество листов в книге;
getSheetNames() — возвращает список всех листов в рабочей книге, индексируя их в порядке, в котором их «вкладки» появляются при открытии в MS Excel (или других программах для обработки электронных таблиц);
getSheet(N) — используется для доступа к листу по индексу. Индекс позиции (N) представляет собой порядок, в котором отображаются вкладки листов, когда книга открыта в MS Excel (или других программах для обработки электронных таблиц);
getSheetByName(list_name) — метод используется для доступа к листу по его имени (list_name);
getActiveSheet() — этот метод позволяет получить доступ к активному листу документа напрямую. Активным листом является тот, который будет активен, когда откроется книга в MS Excel (или другой соответствующей программе электронных таблиц);
setActiveSheetIndex() и setActiveSheetIndexByName() — с помощью этих методов можно назначить лист, который будет активным по его индексу или имени.
Получение значения ячейки по координатам
Для получения значения ячейки, сперва должна быть найдена ячейка путем использования метода getCell. Значение ячейки может быть получено с помощью следующей команды:
$objPHPExcel->getActiveSheet()->getCell('B8')->getValue();
В случае если вам нужны подсчитанные значения ячейки, вместо getValue(), используйте метод getCalculatedValue():
$objPHPExcel->getActiveSheet()->getCell('B8')->getCalculatedValue();
Получение значения ячейки по строкам и столбцам
Для получения значения ячейки, в листе сначала должна быть найдена ячейка с использованием метода getCellByColumnAndRow. Значение ячейки может быть получено с помощью следующей команды:
$objPHPExcel->getActiveSheet()->getCellByColumnAndRow(1, 8)->getValue();
Заключение
В этой статье были рассмотрены основные возможности библиотеки PHPExcel в области чтения excel файлов. Помимо всего выше изложенного, есть возможность более гибко использовать эту библиотеку для работы с различными параметрами таблицы. По этим вопросам рекомендуется обращаться к документации. Библиотека PHPExcel так же адаптирована для работы с другими типами файлов, таких как Excel (BIFF). XLS, Excel 2007 (OfficeOpenXML). XLSX, CSV, Libre / OpenOffice Calc. ODS, Gnumeric, PDF и HTML.