{"id":24591,"date":"2021-05-21T16:48:00","date_gmt":"2021-05-21T13:48:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24591"},"modified":"2021-10-17T20:46:03","modified_gmt":"2021-10-17T17:46:03","slug":"kuinka-lukea-csv-ja-excel-tiedostoja-php-ssa-phpspreadsheetin-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kuinka-lukea-csv-ja-excel-tiedostoja-php-ssa-phpspreadsheetin-avulla\/","title":{"rendered":"Kuinka lukea CSV- ja Excel-tiedostoja PHP: ss\u00e4 PhpSpreadsheetin avulla"},"content":{"rendered":"<p>Verkkosovellusten parissa ty\u00f6skentelemme joskus tilanteessa, jossa meid\u00e4n on tuotava CSV- tai Excel-tiedosto tietokantaan. Se on suositeltava tapa tuoda suuria tietoja tietokantaan sen sijaan, ett\u00e4 sy\u00f6t\u00e4t ne yksitellen.<\/p>\n<p><a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a> on kirjasto, jonka avulla voit lukea CSV- tai Excel-tiedostoja. Kirjasto tarjoaa tukea erityyppisten tiedostomuotojen lukemiseen ja kirjoittamiseen. Alla on kuvakaappaus tuetuista tiedostomuodoista.<\/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=\"Kuinka lukea CSV- ja Excel-tiedostoja PHP: ss\u00e4 PhpSpreadsheetin avulla\" ><\/a><\/p>\n<p>Ennen kuin tutustuin t\u00e4h\u00e4n kirjastoon, k\u00e4ytin <a href=\"https:\/\/php.net\/manual\/en\/function.fgetcsv.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fgetcsv-<\/a> menetelm\u00e4\u00e4 CSV-tiedoston lukemiseen. Ja Excel-tiedostojen tapauksessa minun piti muuntaa Excel ensin CSV: ksi ja sitten lukea se <code>fgetcsv()<\/code>toiminnolla.<\/p>\n<p>PhpSpreadsheet yksinkertaistaa t\u00e4t\u00e4 teht\u00e4v\u00e4\u00e4 kehitt\u00e4jille. PhpSpreadsheetin avulla CSV- ja Excel-tiedostojen tietojen k\u00e4sittely on helpompaa. Lis\u00e4ksi sinun ei tarvitse muuntaa Exceli\u00e4 CSV: ksi sen lukemista varten, kirjasto lukee suoraan Excel-tiedoston.<\/p>\n<p>Katsotaanpa, miten luemme CSV- ja Excel-tiedostoja PhpSpreadsheetin avulla.<\/p>\n<h3>Asennus<\/h3>\n<p>T\u00e4m\u00e4n kirjaston asentamiseen suosittelen <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composerin<\/a> k\u00e4ytt\u00f6\u00e4. Avaa p\u00e4\u00e4te projektin juurihakemistossa ja suorita komento:<\/p>\n<pre><code>composer require phpoffice\/phpspreadsheet<\/code><\/pre>\n<p>Opetusohjelman seuraavassa osassa aion lukea CSV \/ Excel-tiedostoja ja lis\u00e4t\u00e4 niiden tiedot tietokantaan. T\u00e4t\u00e4 varten loin nuken, joka sis\u00e4lt\u00e4\u00e4 sarakkeita ja tietoja seuraavasti:<\/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=\"Kuinka lukea CSV- ja Excel-tiedostoja PHP: ss\u00e4 PhpSpreadsheetin avulla\" ><\/a><\/p>\n<p>N\u00e4iden tietojen tallentamiseksi olen my\u00f6s luonut taulukon &quot;k\u00e4ytt\u00e4j\u00e4t&quot; tietokantaan.<\/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>Opetusohjelman vuoksi k\u00e4yt\u00e4n yll\u00e4 olevia nuken tietoja. K\u00e4ytt\u00e4j\u00e4n tulisi muuttaa taulukon rakennetta tietojoukkonsa mukaan.<\/p>\n<p>Luo <code>db.php<\/code>ja lis\u00e4\u00e4 siihen tietokantayhteyden koodi.<\/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>Muista korvata paikkamerkit todellisilla arvoilla.<\/p>\n<h3>Lue CSV \/ Excel-tiedosto PHP: ss\u00e4<\/h3>\n<p>Tehd\u00e4\u00e4n todellinen koodaus. Luo ensin lomake, jossa on tiedoston sy\u00f6tt\u00f6- ja l\u00e4hetyspainike. K\u00e4ytt\u00e4j\u00e4 lataa CSV \/ Excel-tiedostonsa ja paina L\u00e4het\u00e4-painiketta. L\u00e4hetett\u00e4ess\u00e4 ladatun tiedoston merkinn\u00e4t tulisi lis\u00e4t\u00e4 k\u00e4ytt\u00e4jien taulukkoon.<\/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>Seuraavaksi l\u00e4hetykseen suoritettava koodi on seuraava.<\/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>Yll\u00e4 olevasta koodista selvit\u00e4n tiedostotyypin ja sen perustan, jonka luen tiedoston kirjaston tarjoamien toimintojen avulla. Voit lukea lis\u00e4\u00e4 t\u00e4st\u00e4 virallisista asiakirjoista <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\/topics\/reading-and-writing-to-file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4\u00e4lt\u00e4<\/a>.<\/p>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka lukea CSV- ja Excel-tiedostoja PhpSpreadsheetin avulla. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-vieda-mysql-tietokantatiedot-exceliin-php-n-avulla\/\" title=\"Kuinka vied\u00e4 MySQL-tietokantatiedot Exceliin PHP: n avulla\">Kuinka vied\u00e4 MySQL-tietokantatiedot Exceliin PHP: n avulla<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/lataa-kuva-php-n-bulletproof-library-kirjastolla\/\" title=\"Lataa kuva k\u00e4ytt\u00e4m\u00e4ll\u00e4 luodinkest\u00e4v\u00e4\u00e4 kirjastoa PHP: ss\u00e4\">Lataa kuva k\u00e4ytt\u00e4m\u00e4ll\u00e4 luodinkest\u00e4v\u00e4\u00e4 kirjastoa PHP: ss\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/svg-tuen-salliminen-wordpressissa\/\" title=\"SVG-tuen salliminen WordPressiss\u00e4\">SVG-tuen salliminen WordPressiss\u00e4<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 artikkelissa tutkitaan CSV- ja Excel-tiedostojen lukemista PHP: ss\u00e4? N\u00e4iden tiedostojen lukemiseen suosittelemme k\u00e4ytt\u00e4m\u00e4\u00e4n PhpSpreadsheet-kirjastoa, joka mahdollistaa tuen<\/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":[275],"tags":[843],"class_list":["post-24591","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24591","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=24591"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/24591\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=24591"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=24591"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=24591"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}