Получение данных из Excel в PHP
Пример получение данных из Excel в PHP
Мы будем использовать библиотеку PhpSpreadsheet (https://phpspreadsheet.readthedocs.io/en/latest/).
Установить ее можно через Composer:
php -d extension=phar.so composer.phar require phpoffice/phpspreadsheet
В html файлике создадим форму для загрузки файлов:
<form id="form-filtr" action="excel.php" method="POST" enctype="multipart/form-data">
Отправить этот файл:
<input name="userfile" type="file" accept="application/vnd.ms-excel"/>
<input type="submit" value="Отправить файл" />
</form>
Для примера будем загружать такой файлик:
В php файде обработчике сохраним файл и используя библиотеку PhpSpreadsheet сохраним наши товары в массив.
<?php
// Класс, непосредственно читающий файл
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\IOFactory;
if (isset($_FILES['userfile'])) {
$uploaddir = 'excel/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
$file='excel/'.$_FILES['userfile']['name'];
$reader = IOFactory::createReaderForFile($file);
$reader->setReadDataOnly(true);
// Читаем файл и записываем информацию в переменную
$spreadsheet = $reader->load($file);
// Так можно достать объект Cells, имеющий доступ к содержимому ячеек
$cells = $spreadsheet->getSheetByName('Лист1')->getCellCollection();
// Далее перебираем все заполненные строки
for ($row = 2; $row <= $cells->getHighestRow(); $row++){
$array[$row]['id']=($cells->get('A'.$row))?$cells->get('A'.$row)->getValue():'';
$array[$row]['name']=($cells->get('B'.$row))?$cells->get('B'.$row)->getValue():'';
$array[$row]['description']=($cells->get('C'.$row))?$cells->get('C'.$row)->getValue():'';
$array[$row]['price']=($cells->get('D'.$row))?$cells->get('D'.$row)->getValue():'';
$array[$row]['currency']=($cells->get('E'.$row))?$cells->get('E'.$row)->getValue():'';
}
?>
И получаем такой результат:
Array (
[2] => Array
(
[id] => 1
[name] => Товар1
[description] => Описание1
[price] => 182
[currency] => UAH
)
[3] => Array
(
[id] => 2
[name] => Товар2
[description] => Описание2
[price] => 564.2
[currency] => UAH
)
[4] => Array
(
[id] => 3
[name] => Товар3
[description] => Описание3
[price] => 607.6
[currency] => UAH
)
[5] => Array
(
[id] => 4
[name] => Товар4
[description] => Описание4
[price] => 296.8
[currency] => UAH
)
)
Теперь сохраним наш массив в базу данных
$servername = "localhost";
$database = "test_name";
$username = "test_user";
$password = "test_password";
// Создаем соединение
$conn = mysqli_connect($servername, $username, $password, $database);
// Проверяем соединение
if (!$conn) { die("Connection failed: " . mysqli_connect_error()); }
//Сохраняем наш массив в БД
foreach($array as $value){
$sql = "INSERT INTO Tovars (id, name, description, price, currency ) VALUES ($value['id'], $value['name'], $value['description'], $value['price'], $value['currency'])";
if (mysqli_query($conn, $sql)) {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
}
mysqli_close($conn);
Якщо у вас виникли питання, вбо ви бажаєте записатися на індивідуальний урок, замовити статтю (інструкцію) або придбати відеоурок, пишіть нам на: скайп: olegg.pann telegram, viber - +380937663911 додавайтесь у телеграм-канал: t.me/webyk email: oleggpann@gmail.com ми у fb: www.facebook.com/webprograming24 Обов`язково оперативно відповімо на усі запитіння
Поділіться в соцмережах
Подобные статьи: