...
✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Kuidas lugeda CSV- ja Exceli faile PHP-s, kasutades PhpSpreadsheet

23

Veebirakenduste kallal töötades satume mõnikord olukorrani, kus peame andmebaasi importima CSV- või Exceli-faili. See on eelistatud viis andmebaasi suurte andmete importimiseks, selle asemel et neid ükshaaval sisestada.

PhpSpreadsheet on teek, mis aitab teil CSV- või Exceli faili lugeda. Raamatukogu pakub tuge erinevat tüüpi failivormingute lugemiseks ja kirjutamiseks. Allpool on ekraanipilt toetatud failivormingutest.

Kuidas lugeda CSV- ja Exceli faile PHP-s, kasutades PhpSpreadsheet

Enne selle teegiga tutvumist kasutasin CSV-faili lugemiseks fgetcsv- meetodit. Ja Exceli failide puhul pidin kõigepealt Exceli teisendama CSV-vormingusse ja seejärel fgetcsv()funktsiooni abil läbi lugema .

PhpSpreadsheet lihtsustab seda ülesannet arendajatele. PhpSpreadsheet’i abil on CSV- ja Exceli-failide andmeid lihtsam käsitleda. Lisaks pole selle lugemiseks vaja Exceli CSV-vormingusse teisendada, teek loeb Exceli faili otse.

Sellest hoolimata vaatame, kuidas lugeda CSV- ja Exceli faile PhpSpreadsheetiga.

Paigaldamine

Selle teegi installimiseks soovitan kasutada heliloojat. Avage terminal oma projekti juurkataloogis ja käivitage käsk:

composer require phpoffice/phpspreadsheet

Õpetuse järgmises osas loen CSV / Exceli faile ja sisestan nende andmed andmebaasi. Selle jaoks lõin näivfaili, mis sisaldab järgmisi veerge ja andmeid:

Kuidas lugeda CSV- ja Exceli faile PHP-s, kasutades PhpSpreadsheet

Nende üksikasjade salvestamiseks lõin andmebaasi ka tabeli ‘kasutajad’.

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;

Õpetuse huvides kasutan ülaltoodud näiv andmeid. Kasutaja peaks muutma tabeli struktuuri vastavalt oma andmekogumile.

Looge db.phpja lisage sinna andmebaasiühenduse kood.

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

Asendage kohatäited tegelike väärtustega.

Lugege CSP / Exceli faili PHP-s

Teeme tegeliku kodeerimise. Kõigepealt looge vorm, millel on faili sisestamise ja esitamise nupp. Kasutaja laadib üles oma CSV / Exceli faili, vajuta nuppu Esita. Esitamisel tuleks üleslaaditud faili kanded lisada tabelisse „Kasutajad".

vorm.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>

Järgmisena on esitamisel täidetav kood järgmine.

<?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')");
            }
        }
    }
}
?>

Ülaltoodud koodis uurin välja faili tüübi ja selle alused, mida loen faili kasutades raamatukogu pakutavaid funktsioone. Te saate lugeda rohkem infot selle kohta ametlikud dokumendid siin.

Loodan, et saate aru, kuidas lugeda CSV- ja Exceli faile PhpSpreadsheetiga. Tahaksin kuulda teie mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.

seotud artiklid

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem