...
✅ WEB- och WordPress -nyheter, teman, plugins. Här delar vi tips och bästa webbplatslösningar.

Hur man läser CSV- och Excel-filer i PHP med hjälp av PhpSpreadsheet

48

När vi arbetar med webbapplikationer stöter vi ibland på en situation där vi behöver importera en CSV- eller Excel-fil till databasen. Det är ett föredraget sätt att importera stora data i databasen snarare än att ange den en efter en.

PhpSpreadsheet är biblioteket som hjälper dig att läsa CSV- eller Excel-filen. Biblioteket ger stöd för läsning och skrivning av olika typer av filformat. Nedan visas skärmdump av filformat som stöds.

Hur man läser CSV- och Excel-filer i PHP med hjälp av PhpSpreadsheet

Innan jag lärde mig detta bibliotek använde jag fgetcsv- metoden för att läsa CSV-filen. Och när det gäller Excel-filer, behövde jag först konvertera Excel till CSV och sedan läsa den med fgetcsv()funktionen.

PhpSpreadsheet förenklar denna uppgift för utvecklare. Med hjälp av PhpSpreadsheet är det lättare att hantera data från CSV- och Excel-filer. Dessutom behöver du inte konvertera Excel till CSV för att läsa den, biblioteket läser direkt Excel-filen.

Med det sagt, låt oss ta en titt på hur man läser CSV- och Excel-filer med hjälp av PhpSpreadsheet.

Installation

För installation av detta bibliotek rekommenderar jag att du använder Composer. Öppna terminalen i din projektkatalog och kör kommandot:

composer require phpoffice/phpspreadsheet

I nästa del av handledningen ska jag läsa CSV / Excel-filer och infoga deras data i databasen. För detta skapade jag en dummy-fil som innehåller kolumner och data enligt följande:

Hur man läser CSV- och Excel-filer i PHP med hjälp av PhpSpreadsheet

För att lagra dessa detaljer skapade jag också en tabell ‘användare’ i databasen.

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;

För handledningens skull använder jag ovanstående dummydata. Användaren bör ändra tabellstrukturen enligt deras dataset.

Skapa en db.phpoch lägg till en kod för databasanslutning i den.

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

Se till att ersätta platshållarna med de faktiska värdena.

Läs CSV / Excel-fil i PHP

Låt oss göra den faktiska kodningen. Skapa först ett formulär som har en filinmatnings- och skicka-knapp. Användaren laddar upp sin CSV / Excel-fil, tryck på knappen Skicka. Vid inlämning ska posterna från den uppladdade filen infogas i tabellen ‘användare’.

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>

Därefter kommer koden som ska köras vid inlämningen att vara som följer.

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

I koden ovan hittar jag typen av fil och grunden för att jag läser filen med de funktioner som tillhandahålls av biblioteket. Du kan läsa mer om detta i officiell dokumentation här.

Jag hoppas att du förstår hur man läser CSV- och Excel-filer med PhpSpreadsheet. Jag skulle vilja höra dina tankar och förslag i kommentarsektionen nedan.

relaterade artiklar

Inspelningskälla: artisansweb.net

Denna webbplats använder cookies för att förbättra din upplevelse. Vi antar att du är ok med detta, men du kan välja bort det om du vill. Jag accepterar Fler detaljer