{"id":24803,"date":"2021-05-21T16:56:00","date_gmt":"2021-05-21T13:56:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24803"},"modified":"2021-10-18T03:11:34","modified_gmt":"2021-10-18T00:11:34","slug":"come-leggere-file-csv-ed-excel-in-php-utilizzando-phpspreadsheet","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-leggere-file-csv-ed-excel-in-php-utilizzando-phpspreadsheet\/","title":{"rendered":"Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet"},"content":{"rendered":"<p>Durante il lavoro su applicazioni Web, a volte ci imbattiamo in una situazione in cui \u00e8 necessario importare un file CSV o Excel nel database. \u00c8 un modo preferito per importare dati di grandi dimensioni nel database piuttosto che inserirli uno per uno.<\/p>\n<p><a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a> \u00e8 la libreria che ti aiuta a leggere il file CSV o Excel. La libreria fornisce supporto per la lettura e la scrittura di diversi tipi di formati di file. Di seguito \u00e8 riportato lo screenshot dei formati di file supportati.<\/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=\"Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet\" ><\/a><\/p>\n<p>Prima di conoscere questa libreria, stavo usando il metodo <a href=\"https:\/\/php.net\/manual\/en\/function.fgetcsv.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fgetcsv<\/a> per leggere il file CSV. E nel caso dei file Excel, dovevo prima convertire Excel in CSV e poi leggerlo usando la <code>fgetcsv()<\/code>funzione.<\/p>\n<p>PhpSpreadsheet semplifica questo compito per gli sviluppatori. Utilizzando PhpSpreadsheet, \u00e8 pi\u00f9 facile gestire i dati da file CSV ed Excel. Inoltre, non \u00e8 necessario convertire Excel in CSV per leggerlo, la libreria legge direttamente il file Excel.<\/p>\n<p>Detto questo, diamo un&#8217;occhiata a come leggere i file CSV ed Excel usando PhpSpreadsheet.<\/p>\n<h3>Installazione<\/h3>\n<p>Per l&#8217;installazione di questa libreria, consiglio di utilizzare <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. Apri il terminale nella directory principale del tuo progetto ed esegui il comando:<\/p>\n<pre><code>composer require phpoffice\/phpspreadsheet<\/code><\/pre>\n<p>Nella parte successiva del tutorial, legger\u00f2 i file CSV\/Excel e inserir\u00f2 i loro dati nel database. Per questo, ho creato un file fittizio che contiene colonne e dati come segue:<\/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=\"Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet\" ><\/a><\/p>\n<p>Per memorizzare questi dettagli, ho anche creato una tabella &quot;utenti&quot; nel database.<\/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>Per motivi di tutorial, sto usando i dati fittizi di cui sopra. L&#8217;utente deve modificare la struttura della tabella in base al proprio set di dati.<\/p>\n<p>Crea un <code>db.php<\/code>e aggiungi un codice per la connessione al database in esso.<\/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>Assicurati di sostituire i segnaposto con i valori effettivi.<\/p>\n<h3>Leggi file CSV\/Excel in PHP<\/h3>\n<p>Facciamo la codifica vera e propria. Innanzitutto, crea un modulo che avr\u00e0 un input di file e un pulsante di invio. L&#8217;utente carica il proprio file CSV\/Excel, premere il pulsante di invio. Al momento dell&#8217;invio, le voci del file caricato devono essere inserite nella tabella &quot;utenti&quot;.<\/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>Successivamente, il codice che verr\u00e0 eseguito sull&#8217;invio sar\u00e0 il seguente.<\/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>Nel codice sopra, sto scoprendo il tipo di file e la base di ci\u00f2 che sto leggendo il file utilizzando le funzioni fornite dalla libreria. Puoi leggere di pi\u00f9 su questo nella documentazione ufficiale <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\/topics\/reading-and-writing-to-file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">qui<\/a>.<\/p>\n<p>Spero che tu capisca come leggere i file CSV ed Excel usando PhpSpreadsheet. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-esportare-i-dati-del-database-mysql-in-excel-utilizzando-php\/\" title=\"Come esportare i dati del database MySQL in Excel utilizzando PHP\">Come esportare i dati del database MySQL in Excel utilizzando PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/carica-l-immagine-utilizzando-la-libreria-antiproiettile-in-php\/\" title=\"Carica l&#039;immagine usando la libreria antiproiettile in PHP\">Carica l&#8217;immagine usando la libreria antiproiettile in PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-consentire-il-supporto-svg-in-wordpress\/\" title=\"Come consentire il supporto SVG in WordPress\">Come consentire il supporto SVG in WordPress<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <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 questo articolo, studiamo come leggere file CSV ed Excel in PHP? Per leggere questi file si consiglia di utilizzare la libreria PhpSpreadsheet che consente il supporto per<\/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":[276],"tags":[846],"class_list":["post-24803","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/24803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=24803"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/24803\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=24803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=24803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=24803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}