{"id":24787,"date":"2021-05-25T11:12:00","date_gmt":"2021-05-25T08:12:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24787"},"modified":"2021-10-18T02:13:52","modified_gmt":"2021-10-17T23:13:52","slug":"comment-exporter-des-donnees-de-base-de-donnees-mysql-vers-excel-a-l-aide-de-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-exporter-des-donnees-de-base-de-donnees-mysql-vers-excel-a-l-aide-de-php\/","title":{"rendered":"Comment exporter des donn\u00e9es de base de donn\u00e9es MySQL vers Excel \u00e0 l&rsquo;aide de PHP"},"content":{"rendered":"<p>R\u00e9cemment, j&rsquo;ai publi\u00e9 un article <a href=\"https:\/\/themewp.inform.click\/fr\/comment-lire-un-fichier-csv-et-excel-en-php-a-l-aide-de-phpspreadsheet\/\" title=\"Comment lire un fichier CSV et Excel en PHP \u00e0 l'aide de PhpSpreadsheet\" >Comment lire un fichier CSV et Excel en PHP \u00e0 l&rsquo;aide de PhpSpreadsheet<\/a> et l&rsquo;un des lecteurs a pos\u00e9 des questions sur l&rsquo;exportation d&rsquo;enregistrements de base de donn\u00e9es MySQL vers un fichier Excel. L&rsquo;utilisateur peut avoir besoin de ses donn\u00e9es dans le fichier Excel ou CSV afin de pouvoir les lire ou les partager facilement. Dans cet article, nous avons expliqu\u00e9 comment exporter des donn\u00e9es d&rsquo;une base de donn\u00e9es vers des fichiers Excel et CSV. En plus de cela, nous \u00e9tudierons \u00e9galement comment on peut envoyer ce fichier export\u00e9 en pi\u00e8ce jointe dans l&#8217;email.<\/p>\n<h3>Commencer<\/h3>\n<p>Pour commencer, vous devez d&rsquo;abord installer la biblioth\u00e8que <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a>. Je recommande d&rsquo;utiliser <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a> pour l&rsquo;installation de la biblioth\u00e8que. Ouvrez le terminal dans le r\u00e9pertoire racine de votre projet et ex\u00e9cutez la commande\u00a0:<\/p>\n<pre><code>composer require phpoffice\/phpspreadsheet<\/code><\/pre>\n<p>PhpSpreadsheet est la biblioth\u00e8que qui prend en charge la lecture et l&rsquo;\u00e9criture de diff\u00e9rents types de formats de fichiers. Vous trouverez ci-dessous la capture d&rsquo;\u00e9cran des formats de fichiers pris en charge.<\/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=\"Comment exporter des donn\u00e9es de base de donn\u00e9es MySQL vers Excel \u00e0 l&#039;aide de PHP\" ><\/a><\/p>\n<p>Notre objectif final est d&rsquo;exporter les enregistrements de table de base de donn\u00e9es vers un fichier Excel\/CSV. Je prends le tableau \u00ab\u00a0produits\u00a0\u00bb comme exemple. Cr\u00e9ons une table \u00ab\u00a0produits\u00a0\u00bb dans la base de donn\u00e9es en ex\u00e9cutant la requ\u00eate ci-dessous.<\/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>Ensuite, ajoutez quelques entr\u00e9es factices dans le tableau afin que vous puissiez voir quelques enregistrements dans le fichier export\u00e9.<\/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>Apr\u00e8s cela, cr\u00e9ez un <code>db.php<\/code>fichier dans lequel nous \u00e9crirons la connexion \u00e0 la base de donn\u00e9es.<\/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>Assurez-vous de remplacer les espaces r\u00e9serv\u00e9s par les valeurs r\u00e9elles dans le code ci-dessus. Dans la prochaine partie du didacticiel, j&rsquo;alloue une section distincte sur l&rsquo;exportation de donn\u00e9es vers Excel, vers CSV et l&rsquo;envoi de l&rsquo;e-mail avec un fichier export\u00e9 en pi\u00e8ce jointe.<\/p>\n<h3>Exporter les donn\u00e9es de la base de donn\u00e9es MySQL vers Excel \u00e0 l&rsquo;aide de PHP<\/h3>\n<p>Vous avez install\u00e9 la biblioth\u00e8que et \u00eates pr\u00eat avec une table de base de donn\u00e9es avec des entr\u00e9es factices. Vous pouvez maintenant \u00e9crire le code r\u00e9el qui exportera un fichier Excel contenant des donn\u00e9es.<\/p>\n<p>Cr\u00e9ez un <code>index.php<\/code>fichier dans le r\u00e9pertoire racine. Dans ce fichier, je vais \u00e9crire une requ\u00eate SELECT pour r\u00e9cup\u00e9rer les donn\u00e9es de la base de donn\u00e9es, \u00e9crire ces donn\u00e9es dans Excel et enfin les t\u00e9l\u00e9charger automatiquement.<\/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>Lorsque vous ex\u00e9cutez ce fichier PHP sur un navigateur, un fichier Excel commencera \u00e0 se t\u00e9l\u00e9charger automatiquement et cette feuille Excel aura la sortie suivante.<\/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=\"Comment exporter des donn\u00e9es de base de donn\u00e9es MySQL vers Excel \u00e0 l&#039;aide de PHP\" ><\/a><\/p>\n<h3>Exporter les donn\u00e9es de la base de donn\u00e9es MySQL au format CSV \u00e0 l&rsquo;aide de PHP<\/h3>\n<p>Dans la section pr\u00e9c\u00e9dente, nous avons export\u00e9 des donn\u00e9es vers un fichier Excel. Si quelqu&rsquo;un cherche \u00e0 exporter des donn\u00e9es dans un fichier CSV, vous devez modifier quelques lignes dans le code ci-dessus.<\/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>Envoyer un e-mail avec un fichier en pi\u00e8ce jointe<\/h3>\n<p>Jusqu&rsquo;\u00e0 pr\u00e9sent dans cet article, nous avons vu comment t\u00e9l\u00e9charger le fichier au format CSV et Excel. Certains utilisateurs peuvent souhaiter envoyer le fichier export\u00e9 en pi\u00e8ce jointe dans l&rsquo;e-mail. Voyons comment y parvenir.<\/p>\n<p>Installez d&rsquo;abord la biblioth\u00e8que <a href=\"https:\/\/github.com\/PHPMailer\/PHPMailer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHPMailer<\/a> \u00e0 l&rsquo;aide de la commande\u00a0:<\/p>\n<pre><code>composer require phpmailer\/phpmailer<\/code><\/pre>\n<p>Apr\u00e8s avoir install\u00e9 la biblioth\u00e8que, vous pouvez utiliser n&rsquo;importe quel serveur SMTP pour envoyer un e-mail. C&rsquo;est \u00e0 vous. Vous pouvez utiliser le serveur SMTP fourni par votre h\u00e9bergement, AWS SES ou le serveur SMTP Gmail. Si vous utilisez le serveur SMTP de Gmail, lisez notre article <a href=\"https:\/\/themewp.inform.click\/fr\/envoyer-un-e-mail-a-l-aide-du-serveur-smtp-de-gmail-a-partir-d-un-script-php\/\" title=\"Envoyer un e-mail \u00e0 l&#039;aide du serveur SMTP de Gmail \u00e0 partir d&#039;un script PHP\">Envoyer un e-mail \u00e0 l&rsquo;aide du serveur SMTP de Gmail \u00e0 partir d&rsquo;un script PHP<\/a> qui explique la configuration n\u00e9cessaire.<\/p>\n<p>Le code \u00e9crit pr\u00e9alablement t\u00e9l\u00e9charge automatiquement le fichier. Mais maintenant, au lieu de le rendre t\u00e9l\u00e9chargeable, nous allons enregistrer le fichier dans le r\u00e9pertoire, puis l&rsquo;envoyer en pi\u00e8ce jointe. En bref, nous aurons le code ci-dessous pour enregistrer le fichier.<\/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>Notre code final pour envoyer une pi\u00e8ce jointe dans un e-mail sera le suivant\u00a0:<\/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>Remplacez les espaces r\u00e9serv\u00e9s par les valeurs r\u00e9elles et l&rsquo;e-mail sera envoy\u00e9 avec une pi\u00e8ce jointe \u00e0 l&rsquo;adresse e-mail du destinataire.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment exporter des enregistrements de base de donn\u00e9es MySQL vers un fichier Excel ou CSV et \u00e9galement l&rsquo;envoyer en pi\u00e8ce jointe. S&rsquo;il vous pla\u00eet partager vos pens\u00e9es et suggestions dans la section commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-transferer-des-fichiers-vers-un-serveur-distant-en-php\/\" title=\"Comment transf\u00e9rer des fichiers vers un serveur distant en PHP\">Comment transf\u00e9rer des fichiers vers un serveur distant en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/envoyer-un-e-mail-a-l-aide-de-mailjet-alternative-au-serveur-smtp-de-gmail-en-php\/\" title=\"Envoyer un e-mail \u00e0 l&#039;aide de Mailjet (alternative au serveur SMTP de Gmail) en PHP\">Envoyer un e-mail \u00e0 l&rsquo;aide de Mailjet (alternative au serveur SMTP de Gmail) en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-convertir-du-html-en-pdf-en-php\/\" title=\"Comment convertir du HTML en PDF en PHP\">Comment convertir du HTML en PDF en PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Source d&rsquo;enregistrement:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voulez-vous exporter les donn\u00e9es de la base de donn\u00e9es MySQL vers Excel \u00e0 l&rsquo;aide de PHP\u00a0? Dans cet article, nous vous montrons comment exporter facilement des donn\u00e9es vers un fichier Excel avec un code minimum<\/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":[273],"tags":[844],"class_list":["post-24787","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-4","tag-affiai-fr"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24787","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/comments?post=24787"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24787\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media\/21909"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/media?parent=24787"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24787"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24787"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}