Вывод данных с Excel-файла
Подключение PhpSpreadsheet
Работать с файлом Excel можно через библиотеку PhpSpreadsheet (является следующей версией библиотеки «PHPExcel»). Данная библиотека понимает форматы «xlsx» и «xls».
Ссылка на библиотеку: github.com/PHPOffice/PhpSpreadsheet
Устанавливается PhpSpreadsheet через composer (установку composer можно прочитать на странице установка Yii).
composer require phpoffice/phpspreadsheet
Чтение данных с Excel
Код ниже выводит содержимое Excel-файла:
require 'vendor/autoload.php'; use \PhpOffice\PhpSpreadsheet\Shared\Date; $file = 'path/to/file.xlsx'; // файл для получения данных $excel = \PhpOffice\PhpSpreadsheet\IOFactory::load($file);; // подключить Excel-файл $excel->setActiveSheetIndex(0); // получить данные из указанного листа $sheet = $excel->getActiveSheet(); // формирование html-кода с данными $html = '<table>'; foreach ($sheet->getRowIterator() as $row) { $html .= '<tr>'; $cellIterator = $row->getCellIterator(); foreach ($cellIterator as $cell) { // значение текущей ячейки $value = $cell->getCalculatedValue(); // если дата, то преобразовать в формат PHP if (Date::isDateTime($cell)) { $value = date('d.m.Y', Date::excelToTimestamp($cell->getValue())); } $html .= '<td>'.$value.'</td>'; } $html .= '<tr>'; } $html .= '</table>'; // вывод данных echo $html;
Стоит обратить внимание на метод Date::excelToTimestamp()
.
Excel хранит дату как число дней, прошедшего с 1 января 1900 года. А PHP хранит дату как число секунд, прошедшего с 1 января 1970. Для преобразование формат даты из Excel в PHP используется функция Date::excelToTimestamp()
.
Вывод значения из указанной ячейки в Excel
Если надо вывести значение только указанной ячейки, то можно использовать метод getCell()
или getCellByColumnAndRow()
.
# настройки как на примере выше $sheet = $excel->getActiveSheet(); # Получить значение из ячейки $cell = $sheet->getCell('A1'); // 1-ый способ $cell = $sheet->getCellByColumnAndRow(0, 1); // 2-ой способ # Вывод значения echo $cell->getValue();
Поддержать автора