{"id":25041,"date":"2021-05-25T11:18:00","date_gmt":"2021-05-25T08:18:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25041"},"modified":"2021-10-18T03:10:38","modified_gmt":"2021-10-18T00:10:38","slug":"come-esportare-i-dati-del-database-mysql-in-excel-utilizzando-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-esportare-i-dati-del-database-mysql-in-excel-utilizzando-php\/","title":{"rendered":"Come esportare i dati del database MySQL in Excel utilizzando PHP"},"content":{"rendered":"<p>Recentemente ho pubblicato un articolo <a href=\"https:\/\/themewp.inform.click\/it\/come-leggere-file-csv-ed-excel-in-php-utilizzando-phpspreadsheet\/\" title=\"Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet\" >Come leggere file CSV ed Excel in PHP utilizzando PhpSpreadsheet<\/a> e uno dei lettori ha chiesto di esportare i record del database MySQL in un file Excel. L&#8217;utente potrebbe aver bisogno dei propri dati nel file Excel o CSV in modo da poterli leggere o condividere facilmente. In questo articolo abbiamo discusso di come esportare i dati da un database in file Excel e CSV. Oltre a questo, studieremo anche come inviare questo file esportato come allegato all&#8217;e-mail.<\/p>\n<h3>Iniziare<\/h3>\n<p>Per iniziare, devi prima installare la libreria <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a>. Consiglio di utilizzare <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> per l&#8217;installazione della libreria. 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>PhpSpreadsheet \u00e8 la libreria che 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-20480-6081f88658855.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-20480-6081f88658855.png\" alt=\"Come esportare i dati del database MySQL in Excel utilizzando PHP\" ><\/a><\/p>\n<p>Il nostro obiettivo finale \u00e8 esportare i record della tabella del database in un file Excel\/CSV. Prendo come esempio la tabella &quot;prodotti&quot;. Creiamo una tabella &quot;prodotti&quot; nel database eseguendo la query seguente.<\/p>\n<pre><code>CREATE TABLE `products` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`product_name` varchar(255) NOT NULL,\n\u00a0`product_sku` varchar(255) NOT NULL,\n\u00a0`product_price` varchar(255) NOT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;<\/code><\/pre>\n<p>Successivamente, aggiungi alcune voci fittizie nella tabella in modo da visualizzare alcuni record nel file esportato.<\/p>\n<pre><code>INSERT INTO `products` (`id`, `product_name`, `product_sku`, `product_price`) VALUES\n(1, 'Apple', 'app_111', '$1000'),\n(2, 'Lenovo', 'len_222', '$999'),\n(3, 'Samsung', 'sam_689', '$1200'),\n(4, 'Acer', 'ace_620', '$900');<\/code><\/pre>\n<p>Dopo questo creare un <code>db.php<\/code>file in cui scriveremo la connessione al database.<\/p>\n<p><strong>db.php<\/strong><\/p>\n<pre><code>&lt;?php\n$db_host = 'DATABASE_HOST';\n$db_username = 'DATABASE_USERNAME';\n$db_password = 'DATABASE_PASSWORD';\n$db_name = 'DATABASE_NAME';\n\u00a0\n$db = new mysqli($db_host, $db_username, $db_password, $db_name);\n\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 nel codice sopra. Nella parte successiva del tutorial, assegner\u00f2 una sezione separata sull&#8217;esportazione dei dati in Excel, in CSV e sull&#8217;invio dell&#8217;e-mail con un file esportato come allegato.<\/p>\n<h3>Esporta i dati del database MySQL in Excel usando PHP<\/h3>\n<p>Hai installato la libreria e sei pronto con una tabella di database con voci fittizie. Ora puoi andare avanti e scrivere il codice effettivo che esporter\u00e0 un file Excel con i dati inseriti.<\/p>\n<p>Crea un <code>index.php<\/code>file nella directory principale. In questo file, scriver\u00f2 una query SELECT per recuperare i dati dal database, scrivere questi dati in Excel e infine farli scaricare automaticamente.<\/p>\n<p><strong>index.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"db.php\";\n\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetWriterXlsx;\n\u00a0\n$spreadsheet = new Spreadsheet();\n$Excel_writer = new Xlsx($spreadsheet);\n\u00a0\n$spreadsheet-&gt;setActiveSheetIndex(0);\n$activeSheet = $spreadsheet-&gt;getActiveSheet();\n\u00a0\n$activeSheet-&gt;setCellValue('A1', 'Product Name');\n$activeSheet-&gt;setCellValue('B1', 'Product SKU');\n$activeSheet-&gt;setCellValue('C1', 'Product Price');\n\u00a0\n$query = $db-&gt;query(\"SELECT * FROM products ORDER BY id DESC\");\n\u00a0\nif($query-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0$i = 2;\n\u00a0\u00a0\u00a0\u00a0while($row = $query-&gt;fetch_assoc()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('A'.$i, $row['product_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('B'.$i, $row['product_sku']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('C'.$i, $row['product_price']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$i++;\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$filename = 'products.xlsx';\n\u00a0\nheader('Content-Type: application\/vnd.ms-excel');\nheader('Content-Disposition: attachment;filename='. $filename);\nheader('Cache-Control: max-age=0');\n$Excel_writer-&gt;save('php:\/\/output');<\/code><\/pre>\n<p>Quando esegui questo file PHP su un browser, un file Excel inizier\u00e0 a essere scaricato automaticamente e questo foglio Excel avr\u00e0 il seguente output.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20480-6081f88658855.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-20480-6081f88658855.png\" alt=\"Come esportare i dati del database MySQL in Excel utilizzando PHP\" ><\/a><\/p>\n<h3>Esporta i dati del database MySQL in CSV usando PHP<\/h3>\n<p>Nella sezione precedente, abbiamo esportato i dati in un file Excel. Se qualcuno sta cercando di esportare dati in un file CSV, devi modificare alcune righe nel codice sopra.<\/p>\n<p><strong>csv.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"db.php\";\n\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetWriterCsv;\n\u00a0\n$spreadsheet = new Spreadsheet();\n$Excel_writer = new Csv($spreadsheet);\n\u00a0\n$spreadsheet-&gt;setActiveSheetIndex(0);\n$activeSheet = $spreadsheet-&gt;getActiveSheet();\n\u00a0\n$activeSheet-&gt;setCellValue('A1', 'Product Name');\n$activeSheet-&gt;setCellValue('B1', 'Product SKU');\n$activeSheet-&gt;setCellValue('C1', 'Product Price');\n\u00a0\n$query = $db-&gt;query(\"SELECT * FROM products ORDER BY id DESC\");\n\u00a0\nif($query-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0$i = 2;\n\u00a0\u00a0\u00a0\u00a0while($row = $query-&gt;fetch_assoc()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('A'.$i, $row['product_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('B'.$i, $row['product_sku']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('C'.$i, $row['product_price']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$i++;\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$filename = 'products.csv';\n\u00a0\nheader('Content-Type: application\/text-csv');\nheader('Content-Disposition: attachment;filename='. $filename);\nheader('Cache-Control: max-age=0');\n$Excel_writer-&gt;save('php:\/\/output');<\/code><\/pre>\n<h3>Invia un&#8217;e-mail con un file come allegato<\/h3>\n<p>Finora in questo articolo abbiamo visto come scaricare il file in formato CSV ed Excel. Alcuni utenti potrebbero voler inviare il file esportato come allegato all&#8217;e-mail. Vediamo come realizzarlo.<\/p>\n<p>Per prima cosa installa la libreria <a href=\"https:\/\/github.com\/PHPMailer\/PHPMailer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMailer<\/a> usando il comando:<\/p>\n<pre><code>composer require phpmailer\/phpmailer<\/code><\/pre>\n<p>Dopo aver installato la libreria, puoi utilizzare qualsiasi server SMTP per inviare un&#8217;e-mail. Tocca a voi. Puoi utilizzare il server SMTP fornito dall&#8217;hosting, AWS SES o il server SMTP di Gmail. Se stai utilizzando il server SMTP di Gmail, leggi il nostro articolo <a href=\"https:\/\/themewp.inform.click\/it\/invia-e-mail-utilizzando-il-server-smtp-di-gmail-dallo-script-php\/\" title=\"Invia e-mail utilizzando il server SMTP di Gmail dallo script PHP\">Invia e-mail utilizzando il server SMTP di Gmail dallo script PHP<\/a> che spiega la configurazione necessaria per questo.<\/p>\n<p>Il codice \u00e8 scritto in precedenza scarica il file automaticamente. Ma ora, invece di renderlo scaricabile, salveremo il file nella directory e poi lo invieremo come allegato. In breve, avremo il codice qui sotto per salvare il file.<\/p>\n<pre><code>...\n$filename = 'products.csv';\n\u00a0\nif (!file_exists('files')) {\n\u00a0\u00a0\u00a0\u00a0mkdir('files', 0755);\n}\n$Excel_writer-&gt;save('files\/'.$filename);<\/code><\/pre>\n<p>Il nostro codice finale per inviare l&#8217;allegato in un&#8217;e-mail sar\u00e0 il seguente:<\/p>\n<pre><code>&lt;?php\nrequire_once \"vendor\/autoload.php\";\nrequire_once \"db.php\";\n\u00a0\nuse PhpOfficePhpSpreadsheetSpreadsheet;\nuse PhpOfficePhpSpreadsheetWriterCsv;\n\u00a0\n\/\/Import PHPMailer classes into the global namespace\nuse PHPMailerPHPMailerPHPMailer;\nuse PHPMailerPHPMailerException;\n\u00a0\n$spreadsheet = new Spreadsheet();\n$Excel_writer = new Csv($spreadsheet);\n\u00a0\n$spreadsheet-&gt;setActiveSheetIndex(0);\n$activeSheet = $spreadsheet-&gt;getActiveSheet();\n\u00a0\n$activeSheet-&gt;setCellValue('A1', 'Product Name');\n$activeSheet-&gt;setCellValue('B1', 'Product SKU');\n$activeSheet-&gt;setCellValue('C1', 'Product Price');\n\u00a0\n$query = $db-&gt;query(\"SELECT * FROM products ORDER BY id DESC\");\n\u00a0\nif($query-&gt;num_rows &gt; 0) {\n\u00a0\u00a0\u00a0\u00a0$i = 2;\n\u00a0\u00a0\u00a0\u00a0while($row = $query-&gt;fetch_assoc()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('A'.$i, $row['product_name']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('B'.$i, $row['product_sku']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$activeSheet-&gt;setCellValue('C'.$i, $row['product_price']);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$i++;\n\u00a0\u00a0\u00a0\u00a0}\n}\n\u00a0\n$filename = 'products.csv';\n\u00a0\nif (!file_exists('files')) {\n\u00a0\u00a0\u00a0\u00a0mkdir('files', 0755);\n}\n$Excel_writer-&gt;save('files\/'.$filename);\n\u00a0\n\/\/ send as an attachment\n$mail = new PHPMailer(true);\ntry {\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;isSMTP();\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Host = 'SMTP_HOST';\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;SMTPAuth = true;\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Username = 'SMTP_USERNAME';\u00a0\u00a0 \/\/username\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Password = 'SMTP_PASSWORD';\u00a0\u00a0 \/\/password\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;SMTPSecure = 'ssl';\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Port = 465;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;setFrom('FROM_EMAIL_ADDRESS', 'FROM_NAME');\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;addAddress('RECEPIENT_EMAIL_ADDRESS', 'RECEPIENT_NAME');\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;addAttachment('files\/'.$filename);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;isHTML(true);\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Subject = 'Our Exported File';\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;Body\u00a0\u00a0\u00a0 = 'Our Exported File';\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$mail-&gt;send();\n\u00a0\u00a0\u00a0\u00a0echo 'Message has been sent';\n} catch (Exception $e) {\n\u00a0\u00a0\u00a0\u00a0echo 'Message could not be sent. Mailer Error: '. $mail-&gt;ErrorInfo;\n}<\/code><\/pre>\n<p>Sostituisci i segnaposto con i valori effettivi e l&#8217;email verr\u00e0 inviata con un allegato all&#8217;indirizzo email del destinatario.<\/p>\n<p>Spero che tu capisca come esportare i record del database MySQL nel file Excel o CSV e anche inviarlo come allegato. Per favore condividi 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-trasferire-file-su-server-remoto-in-php\/\" title=\"Come trasferire file su server remoto in PHP\">Come trasferire file su server remoto in PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/invia-e-mail-utilizzando-mailjet-alternativa-al-server-smtp-di-gmail-in-php\/\" title=\"Invia e-mail utilizzando Mailjet (alternativa al server SMTP di Gmail) in PHP\">Invia e-mail utilizzando Mailjet (alternativa al server SMTP di Gmail) in PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-convertire-html-in-pdf-in-php\/\" title=\"Come convertire HTML in PDF in PHP\">Come convertire HTML in PDF in PHP<\/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>Vuoi esportare i dati del database MySQL in Excel utilizzando PHP? In questo articolo, ti mostriamo come esportare facilmente i dati in un file excel con codice minimo<\/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-25041","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\/25041","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=25041"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25041\/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=25041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}