{"id":24611,"date":"2021-05-21T17:04:00","date_gmt":"2021-05-21T14:04:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=24611"},"modified":"2021-10-18T02:14:45","modified_gmt":"2021-10-17T23:14:45","slug":"comment-lire-un-fichier-csv-et-excel-en-php-a-l-aide-de-phpspreadsheet","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fr\/comment-lire-un-fichier-csv-et-excel-en-php-a-l-aide-de-phpspreadsheet\/","title":{"rendered":"Comment lire un fichier CSV et Excel en PHP \u00e0 l&rsquo;aide de PhpSpreadsheet"},"content":{"rendered":"<p>En travaillant sur des applications Web, nous rencontrons parfois une situation o\u00f9 nous devons importer un fichier CSV ou Excel dans la base de donn\u00e9es. C&rsquo;est un moyen privil\u00e9gi\u00e9 d&rsquo;importer des donn\u00e9es volumineuses dans la base de donn\u00e9es plut\u00f4t que de les saisir une par une.<\/p>\n<p><a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PhpSpreadsheet<\/a> est la biblioth\u00e8que qui vous aide \u00e0 lire le fichier CSV ou Excel. La biblioth\u00e8que 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-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=\"Comment lire un fichier CSV et Excel en PHP \u00e0 l&#039;aide de PhpSpreadsheet\" ><\/a><\/p>\n<p>Avant de conna\u00eetre cette biblioth\u00e8que, <a href=\"https:\/\/php.net\/manual\/en\/function.fgetcsv.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">j&rsquo;utilisais la<\/a> m\u00e9thode <a href=\"https:\/\/php.net\/manual\/en\/function.fgetcsv.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">fgetcsv<\/a> pour lire le fichier CSV. Et dans le cas des fichiers Excel, je devais d&rsquo;abord convertir Excel en CSV, puis le lire \u00e0 l&rsquo;aide de la <code>fgetcsv()<\/code>fonction.<\/p>\n<p>PhpSpreadsheet simplifie cette t\u00e2che pour les d\u00e9veloppeurs. En utilisant PhpSpreadsheet, il est plus facile de g\u00e9rer les donn\u00e9es des fichiers CSV et Excel. De plus, vous n&rsquo;avez pas besoin de convertir Excel en CSV pour le lire, la biblioth\u00e8que lit directement le fichier Excel.<\/p>\n<p>Cela \u00e9tant dit, voyons comment lire les fichiers CSV et Excel \u00e0 l&rsquo;aide de PhpSpreadsheet.<\/p>\n<h3>Installation<\/h3>\n<p>Pour l&rsquo;installation de cette biblioth\u00e8que, je recommande d&rsquo;utiliser le <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Composer<\/a>. 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>Dans la prochaine partie du tutoriel, je vais lire les fichiers CSV\/Excel et ins\u00e9rer leurs donn\u00e9es dans la base de donn\u00e9es. Pour cela, j&rsquo;ai cr\u00e9\u00e9 un fichier factice qui contient des colonnes et des donn\u00e9es comme suit\u00a0:<\/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=\"Comment lire un fichier CSV et Excel en PHP \u00e0 l&#039;aide de PhpSpreadsheet\" ><\/a><\/p>\n<p>Pour stocker ces d\u00e9tails, j&rsquo;ai \u00e9galement cr\u00e9\u00e9 une table &lsquo;users&rsquo; dans la base de donn\u00e9es.<\/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>Pour le tutoriel, j&rsquo;utilise les donn\u00e9es factices ci-dessus. L&rsquo;utilisateur doit modifier la structure de la table en fonction de son ensemble de donn\u00e9es.<\/p>\n<p>Cr\u00e9ez un <code>db.php<\/code>et ajoutez-y un code pour la connexion \u00e0 la base de donn\u00e9es.<\/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>Assurez-vous de remplacer les espaces r\u00e9serv\u00e9s par les valeurs r\u00e9elles.<\/p>\n<h3>Lire le fichier CSV\/Excel en PHP<\/h3>\n<p>Faisons le codage r\u00e9el. Tout d&rsquo;abord, cr\u00e9ez un formulaire qui comportera un bouton de saisie de fichier et de soumission. L&rsquo;utilisateur t\u00e9l\u00e9charge son fichier CSV\/Excel, appuyez sur le bouton Soumettre. Lors de la soumission, les entr\u00e9es du fichier t\u00e9l\u00e9charg\u00e9 doivent \u00eatre ins\u00e9r\u00e9es dans le tableau \u00ab\u00a0utilisateurs\u00a0\u00bb.<\/p>\n<p><strong>formulaire.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>Ensuite, le code qui s&rsquo;ex\u00e9cutera sur la soumission sera le suivant.<\/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>Dans le code ci-dessus, je d\u00e9couvre le type de fichier et la base sur laquelle je lis le fichier \u00e0 l&rsquo;aide des fonctions fournies par la biblioth\u00e8que. Vous pouvez en savoir plus \u00e0 ce sujet sur la documentation officielle <a href=\"https:\/\/phpspreadsheet.readthedocs.io\/en\/latest\/topics\/reading-and-writing-to-file\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ici<\/a>.<\/p>\n<p>J&rsquo;esp\u00e8re que vous comprenez comment lire les fichiers CSV et Excel \u00e0 l&rsquo;aide de PhpSpreadsheet. J&rsquo;aimerais entendre vos pens\u00e9es et suggestions dans la section des commentaires ci-dessous.<\/p>\n<h4>Articles Li\u00e9s<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-exporter-des-donnees-de-base-de-donnees-mysql-vers-excel-a-l-aide-de-php\/\" title=\"Comment exporter des donn\u00e9es de base de donn\u00e9es MySQL vers Excel \u00e0 l&#039;aide de PHP\">Comment exporter des donn\u00e9es de base de donn\u00e9es MySQL vers Excel \u00e0 l&rsquo;aide de PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/telecharger-une-image-a-l-aide-de-la-bibliotheque-bulletproof-en-php\/\" title=\"T\u00e9l\u00e9charger une image \u00e0 l&#039;aide de la biblioth\u00e8que Bulletproof en PHP\">T\u00e9l\u00e9charger une image \u00e0 l&rsquo;aide de la biblioth\u00e8que Bulletproof en PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fr\/comment-autoriser-le-support-svg-dans-wordpress\/\" title=\"Comment autoriser le support SVG dans WordPress\">Comment autoriser le support SVG dans WordPress<\/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>Dans cet article, nous \u00e9tudions comment lire les fichiers CSV et Excel en PHP ? Pour lire ces fichiers, nous vous recommandons d&rsquo;utiliser la biblioth\u00e8que PhpSpreadsheet qui permet la prise en charge de<\/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-24611","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\/24611","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=24611"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/posts\/24611\/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=24611"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/categories?post=24611"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fr\/wp-json\/wp\/v2\/tags?post=24611"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}