✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як читати файл CSV та Excel у PHP за допомогою таблиці Php

46

Працюючи над веб-додатками, іноді ми стикаємось із ситуацією, коли нам потрібно імпортувати файл CSV або Excel у базу даних. Це кращий спосіб імпортувати великі дані в базу даних, а не вводити їх по одному.

PhpSpreadsheet – це бібліотека, яка допомагає читати файл CSV або Excel. Бібліотека забезпечує підтримку читання та запису різних типів форматів файлів. Нижче наведено знімок екрана підтримуваних форматів файлів.

Як читати файл CSV та Excel у PHP за допомогою таблиці Php

Перш ніж я пізнав цю бібліотеку, я використовував метод fgetcsv для читання файлу CSV. А у випадку з файлами Excel мені спочатку потрібно було перетворити Excel у CSV, а потім прочитати його за допомогою fgetcsv()функції.

PhpSpreadsheet спрощує це завдання для розробників. Використовуючи PhpSpreadsheet, простіше обробляти дані з файлів CSV та Excel. Крім того, вам не потрібно перетворювати Excel у CSV для його читання, бібліотека безпосередньо читає файл Excel.

З огляду на це, давайте подивимося, як читати файли CSV та Excel за допомогою PhpSpreadsheet.

Встановлення

Для встановлення цієї бібліотеки я рекомендую використовувати Composer. Відкрийте термінал у кореневому каталозі проекту та запустіть команду:

composer require phpoffice/phpspreadsheet

У наступній частині підручника я збираюся прочитати файли CSV / Excel та вставити їх дані в базу даних. Для цього я створив фіктивний файл, який містить стовпці та дані наступним чином:

Як читати файл CSV та Excel у PHP за допомогою таблиці Php

Щоб зберегти ці деталі, я також створив таблицю "користувачі" в базі даних.

CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 `email` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Заради підручника я використовую вищезазначені фіктивні дані. Користувач повинен змінити структуру таблиці відповідно до свого набору даних.

Створіть db.phpі додайте в нього код для підключення до бази даних.

db.php

<?php
$db_host = 'DB_HOST';
$db_username = 'DB_USERNAME';
$db_password = 'DB_PASSWORD';
$db_name = 'DB_NAME';
  
$db = new mysqli($db_host, $db_username, $db_password, $db_name);
  
if($db->connect_error){
    die("Unable to connect database: ". $db->connect_error);
}

Обов’язково замініть заповнювачі фактичними значеннями.

Прочитайте файл CSV / Excel у PHP

Давайте виконаємо власне кодування. Спочатку створіть форму, яка матиме введення файлу та кнопку подання. Користувач завантажує свій файл CSV / Excel, натискаючи кнопку "Надіслати". Після подання записи із завантаженого файлу слід вставити в таблицю "користувачі".

form.php

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label for="exampleInputFile">File Upload</label>
        <input type="file" name="file" class="form-control" id="exampleInputFile">
    </div>
    <button type="submit" name="submit" class="btn btn-primary">Submit</button>
</form>

Далі код, який буде виконаний при поданні, буде таким.

<?php
require_once 'vendor/autoload.php';
require_once 'db.php';
  
use PhpOfficePhpSpreadsheetSpreadsheet;
use PhpOfficePhpSpreadsheetReaderCsv;
use PhpOfficePhpSpreadsheetReaderXlsx;
  
if (isset($_POST['submit'])) {
 
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     
    if(isset($_FILES['file']['name']) && in_array($_FILES['file']['type'], $file_mimes)) {
     
        $arr_file = explode('.', $_FILES['file']['name']);
        $extension = end($arr_file);
     
        if('csv' == $extension) {
            $reader = new PhpOfficePhpSpreadsheetReaderCsv();
        } else {
            $reader = new PhpOfficePhpSpreadsheetReaderXlsx();
        }
 
        $spreadsheet = $reader->load($_FILES['file']['tmp_name']);
 
        $sheetData = $spreadsheet->getActiveSheet()->toArray();
 
        if (!empty($sheetData)) {
            for ($i=1; $i<count($sheetData); $i++) {
                $name = $sheetData[$i][1];
                $email = $sheetData[$i][2];
                $db->query("INSERT INTO USERS(name, email) VALUES('$name', '$email')");
            }
        }
    }
}
?>

У наведеному вище коді я з’ясовую тип файлу та основу того, що я читаю файл, використовуючи функції бібліотеки. Детальніше про це ви можете прочитати в офіційній документації тут.

Сподіваюся, ви розумієте, як читати файли CSV та Excel за допомогою PhpSpreadsheet. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі