
Сегодня мы поговорим об импорте данных из Excel
Для начала нам понадобится форма, через которую мы будем загружать файл к нам на сервер
<form action="" enctype="multipart/form-data" method="POST"> <input type="file" name="import_file> <button type="submit" class="btn btn-small btn-danger" >Загрузить</button> </form>
Обратите внимание на атрибуты enctype=»multipart/form-data» и method=»POST». Они обязательны, без них наш импортер не заработает
Далее подготовим обработчик на php
Я использую очень удобную библиотеку — PHP Excel. Скачаем его по ссылке. В архиве есть также уйма разнообразных примеров использования библиотеки, Вы найдете нужный при необходимости.
Далее подготовим обработчик на php, подключим наш файл, создадим экземпляр класса и получим ссылку на первый лист документа
include __DIR__.'/PHPExcel.php'; $objPHPExcel = PHPExcel_IOFactory::load($_FILES["import_file"]["tmp_name"]); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet();
Также лучше наш импорт обернуть в проверку на существование файла. Это делается так:
if (isset($_FILES["import_file"]["tmp_name"])){ include __DIR__.'/PHPExcel.php'; $objPHPExcel = PHPExcel_IOFactory::load($_FILES["import_file"]["tmp_name"]); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); }
Заранее нам нужно условиться, в каком виде будет файл к нам приходить к нам на сервер. В моем случае Excel-файл будет иметь такой вид
Приступим к перебору данных из таблицы, подготовке данный
$i = 0 ; $data = array(); $keys = array( // подготовим ключи для исходного массива 0=>'name', 1=>'email', 2=>'user_index', 3=>'address', 4=>'pass_to_project', 5=>'date0', 6=>'date1', 7=>'date2' ); foreach($aSheet->getRowIterator() as $row){ // перебираем строки if (!$i){ // пропускаем первую строку $i++; continue; } $cellIterator = $row->getCellIterator(); $j = 0; foreach($cellIterator as $cell){ // перебираем столбцы $data[$i][$keys[$j]] = $cell->getCalculatedValue(); $j++; } $i++; }
И проверим что у нас получилось в массиве $data
echo "<pre>"; print_r($data); echo "</pre>";
php-код полностью
if (isset($_FILES["import_file"]["tmp_name"])){ include __DIR__.'/PHPExcel.php'; $objPHPExcel = PHPExcel_IOFactory::load($_FILES["import_file"]["tmp_name"]); $objPHPExcel->setActiveSheetIndex(0); $aSheet = $objPHPExcel->getActiveSheet(); $i = 0; $data = array(); $keys = array( // подготовим ключи для исходного массива 0=>'name',1=>'email',2=>'user_index',3=>'address',4=>'pass_to_project',5=>'date0',6=>'date1',7=>'date2' ); foreach($aSheet->getRowIterator() as $row){ // перебираем строки if (!$i){ // пропускаем первую строку $i++; continue; } $cellIterator = $row->getCellIterator(); $j = 0; foreach($cellIterator as $cell){ // перебираем столбцы $data[$i][$keys[$j]] = $cell->getCalculatedValue(); $j++; } $i++; } echo "<pre>"; print_r($data); echo "</pre>"; }
Надеюсь Вам это пригодится