{"id":24596,"date":"2021-05-21T16:44:00","date_gmt":"2021-05-21T13:44:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24596"},"modified":"2021-10-18T02:40:14","modified_gmt":"2021-10-17T23:40:14","slug":"so-lesen-sie-csv-und-excel-dateien-in-php-mit-phpspreadsheet","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/de\/so-lesen-sie-csv-und-excel-dateien-in-php-mit-phpspreadsheet\/","title":{"rendered":"So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet"},"content":{"rendered":"<p>Bei der Arbeit an Webanwendungen sto\u00dfen wir manchmal auf eine Situation, in der wir eine CSV- oder Excel-Datei in die Datenbank importieren m\u00fcssen. Dies ist eine bevorzugte Methode, um gro\u00dfe Daten in die Datenbank zu importieren, anstatt sie einzeln einzugeben.<\/p>\n<p><a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a> ist die Bibliothek, die Ihnen beim Lesen der CSV- oder Excel-Datei hilft. Die Bibliothek bietet Unterst\u00fctzung f\u00fcr das Lesen und Schreiben verschiedener Arten von Dateiformaten. Unten ist der Screenshot der unterst\u00fctzten Dateiformate.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20521-6081ff1d2ea20.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20521-6081ff1d2ea20.png\" alt=\"So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet\" ><\/a><\/p>\n<p>Bevor ich diese Bibliothek kennenlernte, habe ich die <a href=\"https:\/\/php.net\/manual\/en\/function.fgetcsv.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fgetcsv-<\/a> Methode zum Lesen der CSV-Datei verwendet. Und im Fall von Excel-Dateien musste ich zuerst Excel in CSV konvertieren und dann mit der <code>fgetcsv()<\/code>Funktion lesen .<\/p>\n<p>PhpSpreadsheet vereinfacht diese Aufgabe f\u00fcr Entwickler. Mit PhpSpreadsheet ist es einfacher, die Daten aus CSV- und Excel-Dateien zu verarbeiten. Au\u00dferdem m\u00fcssen Sie Excel zum Lesen nicht in CSV konvertieren, die Bibliothek liest die Excel-Datei direkt.<\/p>\n<p>Lassen Sie uns jedoch einen Blick darauf werfen, wie Sie CSV- und Excel-Dateien mit PhpSpreadsheet lesen.<\/p>\n<h3>Installation<\/h3>\n<p>Zur Installation dieser Bibliothek empfehle ich die Verwendung des <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. \u00d6ffnen Sie das Terminal in Ihrem Projekt-Stammverzeichnis und f\u00fchren Sie den Befehl aus:<\/p>\n<pre><code>composer require phpoffice\/phpspreadsheet<\/code><\/pre>\n<p>Im n\u00e4chsten Teil des Tutorials werde ich CSV\/Excel-Dateien lesen und deren Daten in die Datenbank einf\u00fcgen. Dazu habe ich eine Dummy-Datei erstellt, die Spalten und Daten wie folgt enth\u00e4lt:<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20521-6081ff1d8f648.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20521-6081ff1d8f648.png\" alt=\"So lesen Sie CSV- und Excel-Dateien in PHP mit PHPSpreadsheet\" ><\/a><\/p>\n<p>Um diese Details zu speichern, habe ich auch eine Tabelle &#8218;users&#8216; in der Datenbank erstellt.<\/p>\n<pre><code>CREATE TABLE `users` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`name` varchar(255) DEFAULT NULL,\n\u00a0`email` varchar(255) DEFAULT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\n<p>F\u00fcr das Tutorial verwende ich die obigen Dummy-Daten. Der Benutzer sollte die Tabellenstruktur gem\u00e4\u00df seinem Datensatz \u00e4ndern.<\/p>\n<p>Erstellen Sie eine <code>db.php<\/code>und f\u00fcgen Sie einen Code f\u00fcr die Datenbankverbindung hinzu.<\/p>\n<p><strong>db.php<\/strong><\/p>\n<pre><code>&lt;?php\n$db_host = 'DB_HOST';\n$db_username = 'DB_USERNAME';\n$db_password = 'DB_PASSWORD';\n$db_name = 'DB_NAME';\n\u00a0\u00a0\n$db = new mysqli($db_host, $db_username, $db_password, $db_name);\n\u00a0\u00a0\nif($db-&gt;connect_error){\n\u00a0\u00a0\u00a0\u00a0die(\"Unable to connect database: \". $db-&gt;connect_error);\n}<\/code><\/pre>\n<p>Stellen Sie sicher, dass Sie die Platzhalter durch die tats\u00e4chlichen Werte ersetzen.<\/p>\n<h3>CSV\/Excel-Datei in PHP lesen<\/h3>\n<p>Lassen Sie uns die eigentliche Codierung durchf\u00fchren. Erstellen Sie zun\u00e4chst ein Formular mit einer Dateieingabe- und Senden-Schaltfl\u00e4che. Der Benutzer l\u00e4dt seine CSV\/Excel-Datei hoch, klicken Sie auf die Schaltfl\u00e4che Senden. Bei der \u00dcbermittlung sollten die Eintr\u00e4ge aus der hochgeladenen Datei in die Tabelle &#8218;Benutzer&#8216; eingef\u00fcgt werden.<\/p>\n<p><strong>form.php<\/strong><\/p>\n<pre><code>&lt;form method=\"post\" enctype=\"multipart\/form-data\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;div class=\"form-group\"&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;label for=\"exampleInputFile\"&gt;File Upload&lt;\/label&gt;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0&lt;input type=\"file\" name=\"file\" class=\"form-control\" id=\"exampleInputFile\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;\/div&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;button type=\"submit\" name=\"submit\" class=\"btn btn-primary\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Als n\u00e4chstes sieht der Code, der bei der \u00dcbermittlung ausgef\u00fchrt wird, wie folgt aus.<\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\nrequire_once 'db.php';\n\u00a0\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetReaderCsv;\nuse PhpOfficePhpSpreadsheetReaderXlsx;\n\u00a0\u00a0\nif (isset($_POST['submit'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$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');\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0if(isset($_FILES['file']['name']) &amp;&amp; in_array($_FILES['file']['type'], $file_mimes)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$arr_file = explode('.', $_FILES['file']['name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$extension = end($arr_file);\n\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if('csv' == $extension) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$reader = new PhpOfficePhpSpreadsheetReaderCsv();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$reader = new PhpOfficePhpSpreadsheetReaderXlsx();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$spreadsheet = $reader-&gt;load($_FILES['file']['tmp_name']);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$sheetData = $spreadsheet-&gt;getActiveSheet()-&gt;toArray();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (!empty($sheetData)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0for ($i=1; $i&lt;count($sheetData); $i++) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$name = $sheetData[$i][1];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$email = $sheetData[$i][2];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;query(\"INSERT INTO USERS(name, email) VALUES('$name', '$email')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}\n?&gt;<\/code><\/pre>\n<p>Im obigen Code finde ich den Dateityp und die Grundlage daf\u00fcr heraus, dass ich die Datei mit den von der Bibliothek bereitgestellten Funktionen lese. Weitere Informationen hierzu finden Sie in der offiziellen Dokumentation <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\/topics\/reading-and-writing-to-file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hier<\/a>.<\/p>\n<p>Ich hoffe, Sie verstehen, wie man CSV- und Excel-Dateien mit PhpSpreadsheet liest. Ich w\u00fcrde gerne Ihre Gedanken und Vorschl\u00e4ge im Kommentarbereich unten h\u00f6ren.<\/p>\n<h4>Zum Thema passende Artikel<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-exportieren-sie-mysql-datenbankdaten-mit-php-nach-excel\/\" title=\"So exportieren Sie MySQL-Datenbankdaten mit PHP nach Excel\">So exportieren Sie MySQL-Datenbankdaten mit PHP nach Excel<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/bild-mit-bulletproof-library-in-php-hochladen-upload\/\" title=\"Bild mit der Bulletproof-Bibliothek in PHP hochladen\">Bild mit der Bulletproof-Bibliothek in PHP hochladen<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/de\/so-erlauben-sie-die-svg-unterstutzung-in-wordpress\/\" title=\"So erlauben Sie die SVG-Unterst\u00fctzung in WordPress\">So erlauben Sie die SVG-Unterst\u00fctzung in WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Aufnahmequelle:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In diesem Artikel untersuchen wir, wie man CSV- und Excel-Dateien in PHP liest. Um diese Dateien zu lesen, empfehlen wir die PhpSpreadsheet-Bibliothek zu verwenden, die Unterst\u00fctzung f\u00fcr<\/p>\n","protected":false},"author":1,"featured_media":21909,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[272],"tags":[845],"class_list":["post-24596","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-3","tag-affiai-de"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24596","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/comments?post=24596"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/posts\/24596\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/media?parent=24596"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/categories?post=24596"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/de\/wp-json\/wp\/v2\/tags?post=24596"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}