Чтение данных из файла «.XLSX» с помощью PHPExcel


В проекте может понадобиться импорт данных из файла Excel на сайт. Это может быть прайс-лист с ценам который необходимо обновить, данные статистики для последующей обработки или список адресов для рассылки. Один из моментов заключается в том что пользователь должен без особых знаний подготовить документ для загрузки, для базового стандарта можно использовать Excel:


  • Большинство систем имеют возможность экспортировать данные в excel
  • Работой с Microsoft Excel на базовом уровне владеют 99.9% пользователей компьютера, в бизнесе – это можно сказать стандарт.
  • Объяснить как должен выглядеть файл в excele для загрузки в разы легче

Библиотекой PHPExcel пользуются многие сайты для генерации отчетов или импорта данных из таблиц MS Excel. PHPExcel позволяет читать ячейки таблицы построчно , приходясь по ним циклом.


Простой способ использования PHPExcel:

Скачиваем и распаковываем последнию версию библиотеки с сайта phpexcel.codeplex.com (там же есть примеры) ( или PHPExcel 1.8.0 )

Файл excel имеет содержание:

Дата Ф.И.О e-mail
20.11.2003 Иванов П.С ivano@exemle.com
20.13.2005 Сидоров П.А sidorov@exemle.com
23.11.2008 Петров П.С petrov@exemle.com

И собственно сам скрипт пример работы чтение данных из файла «.XLSX»:

# подключаем библиотеку
require_once "$_SERVER[DOCUMENT_ROOT]/xls/PHPExcel.php";
# Указываем путь до файла .xlsx
$File = "$_SERVER[DOCUMENT_ROOT]/xls/test.xlsx";

$Excel = PHPExcel_IOFactory::load($File);

# С какой строки начинаются данные
$Start = 2;
$Res = array();
for ($i= $Start; $i <= 1000; $i++)
{
    $Row = new stdClass();
    $Row->id = $i;
		
    $Row->date = $Excel->getActiveSheet()->getCell('A'.$i )->getValue(); 
    # Преобразовываем формат даты из MS в привычный
    $Row->date = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($oRow->date));
    $Row->name = $Excel->getActiveSheet()->getCell('B'.$i )->getValue(); 	
    $Row->mail = $Excel->getActiveSheet()->getCell('C'.$i )->getValue(); 

    if($Row->name == null) continue;
		
    $Res[] = $Row;
}
	 
 echo "<pre>";
	print_r($Res);
 echo "</pre>"
	
#php

Copyright © 2013-2017