6b26fdc9795a4febb31ae5756340f6fc

Сегодня мы поговорим об импорте данных из 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-файл будет иметь такой вид

php 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 excel результат работы

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>";
}

Надеюсь Вам это пригодится

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *