{"id":28349,"date":"2021-05-21T16:53:00","date_gmt":"2021-05-21T13:53:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=28349"},"modified":"2021-10-17T04:45:24","modified_gmt":"2021-10-17T01:45:24","slug":"hur-man-laser-csv-och-excel-filer-i-php-med-hjalp-av-phpspreadsheet","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/sv\/hur-man-laser-csv-och-excel-filer-i-php-med-hjalp-av-phpspreadsheet\/","title":{"rendered":"Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet"},"content":{"rendered":"<p>N\u00e4r vi arbetar med webbapplikationer st\u00f6ter vi ibland p\u00e5 en situation d\u00e4r vi beh\u00f6ver importera en CSV- eller Excel-fil till databasen. Det \u00e4r ett f\u00f6redraget s\u00e4tt att importera stora data i databasen snarare \u00e4n att ange den en efter en.<\/p>\n<p><a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a> \u00e4r biblioteket som hj\u00e4lper dig att l\u00e4sa CSV- eller Excel-filen. Biblioteket ger st\u00f6d f\u00f6r l\u00e4sning och skrivning av olika typer av filformat. Nedan visas sk\u00e4rmdump av filformat som st\u00f6ds.<\/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=\"Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet\" ><\/a><\/p>\n<p>Innan jag l\u00e4rde mig detta bibliotek anv\u00e4nde <a href=\"https:\/\/php.net\/manual\/en\/function.fgetcsv.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">jag fgetcsv-<\/a> metoden f\u00f6r att l\u00e4sa CSV-filen. Och n\u00e4r det g\u00e4ller Excel-filer, beh\u00f6vde jag f\u00f6rst konvertera Excel till CSV och sedan l\u00e4sa den med <code>fgetcsv()<\/code>funktionen.<\/p>\n<p>PhpSpreadsheet f\u00f6renklar denna uppgift f\u00f6r utvecklare. Med hj\u00e4lp av PhpSpreadsheet \u00e4r det l\u00e4ttare att hantera data fr\u00e5n CSV- och Excel-filer. Dessutom beh\u00f6ver du inte konvertera Excel till CSV f\u00f6r att l\u00e4sa den, biblioteket l\u00e4ser direkt Excel-filen.<\/p>\n<p>Med det sagt, l\u00e5t oss ta en titt p\u00e5 hur man l\u00e4ser CSV- och Excel-filer med hj\u00e4lp av PhpSpreadsheet.<\/p>\n<h3>Installation<\/h3>\n<p>F\u00f6r installation av detta bibliotek rekommenderar jag att du anv\u00e4nder <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. \u00d6ppna terminalen i din projektkatalog och k\u00f6r kommandot:<\/p>\n<pre><code>composer require phpoffice\/phpspreadsheet<\/code><\/pre>\n<p>I n\u00e4sta del av handledningen ska jag l\u00e4sa CSV \/ Excel-filer och infoga deras data i databasen. F\u00f6r detta skapade jag en dummy-fil som inneh\u00e5ller kolumner och data enligt f\u00f6ljande:<\/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=\"Hur man l\u00e4ser CSV- och Excel-filer i PHP med hj\u00e4lp av PhpSpreadsheet\" ><\/a><\/p>\n<p>F\u00f6r att lagra dessa detaljer skapade jag ocks\u00e5 en tabell &#8217;anv\u00e4ndare&#8217; i databasen.<\/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\u00f6r handledningens skull anv\u00e4nder jag ovanst\u00e5ende dummydata. Anv\u00e4ndaren b\u00f6r \u00e4ndra tabellstrukturen enligt deras dataset.<\/p>\n<p>Skapa en <code>db.php<\/code>och l\u00e4gg till en kod f\u00f6r databasanslutning i den.<\/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>Se till att ers\u00e4tta platsh\u00e5llarna med de faktiska v\u00e4rdena.<\/p>\n<h3>L\u00e4s CSV \/ Excel-fil i PHP<\/h3>\n<p>L\u00e5t oss g\u00f6ra den faktiska kodningen. Skapa f\u00f6rst ett formul\u00e4r som har en filinmatnings- och skicka-knapp. Anv\u00e4ndaren laddar upp sin CSV \/ Excel-fil, tryck p\u00e5 knappen Skicka. Vid inl\u00e4mning ska posterna fr\u00e5n den uppladdade filen infogas i tabellen &#8217;anv\u00e4ndare&#8217;.<\/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>D\u00e4refter kommer koden som ska k\u00f6ras vid inl\u00e4mningen att vara som f\u00f6ljer.<\/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>I koden ovan hittar jag typen av fil och grunden f\u00f6r att jag l\u00e4ser filen med de funktioner som tillhandah\u00e5lls av biblioteket. Du kan l\u00e4sa mer om detta i officiell dokumentation <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\/topics\/reading-and-writing-to-file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">h\u00e4r<\/a>.<\/p>\n<p>Jag hoppas att du f\u00f6rst\u00e5r hur man l\u00e4ser CSV- och Excel-filer med PhpSpreadsheet. Jag skulle vilja h\u00f6ra dina tankar och f\u00f6rslag i kommentarsektionen nedan.<\/p>\n<h4>relaterade artiklar<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-exporterar-mysql-databasdata-till-excel-med-php\/\" title=\"Hur man exporterar MySQL-databasdata till Excel med PHP\">Hur man exporterar MySQL-databasdata till Excel med PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/ladda-upp-bild-med-bulletproof-library-i-php\/\" title=\"Ladda upp bild med hj\u00e4lp av Bulletproof Library i PHP\">Ladda upp bild med hj\u00e4lp av Bulletproof Library i PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/sv\/hur-man-tillater-svg-stod-i-wordpress\/\" title=\"Hur man till\u00e5ter SVG-st\u00f6d i WordPress\">Hur man till\u00e5ter SVG-st\u00f6d i WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I den h\u00e4r artikeln studerar vi hur man l\u00e4ser CSV- och Excel-filer i PHP? F\u00f6r att l\u00e4sa dessa filer rekommenderar vi att du anv\u00e4nder PhpSpreadsheet-biblioteket som ger st\u00f6d f\u00f6r<\/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":[279],"tags":[850],"class_list":["post-28349","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-10","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/comments?post=28349"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/posts\/28349\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/media?parent=28349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/categories?post=28349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/sv\/wp-json\/wp\/v2\/tags?post=28349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}