Maison >développement back-end >Problème PHP >Comment convertir un CSV en XLS en PHP
Pendant le processus de développement proprement dit, nous devrons peut-être convertir les données au format CSV au format Excel (XLS ou XLSX). Parce que le fichier CSV n'est qu'un simple fichier texte et que le fichier Excel prend en charge plus de fonctions, telles que le filtrage des données, le tri, l'affichage de graphiques, etc. PHP fournit une puissante bibliothèque de fonctions pour traiter CSV et Excel. Ce qui suit explique comment utiliser PHP pour convertir des fichiers CSV en fichiers Excel.
PHP fournit la fonction fgetcsv() pour lire les fichiers CSV et analyser chaque ligne dans un tableau. Voici un exemple de lecture d'un fichier CSV :
$csvFile = 'data.csv'; if(!file_exists($csvFile)) { die("File not found"); } $fp = fopen($csvFile, 'r'); if(!$fp) { die("Error opening file"); } $data = array(); while($row = fgetcsv($fp)) { $data[] = $row; } fclose($fp);
Ce code vérifie d'abord si le fichier CSV existe, puis ouvre le fichier et utilise la fonction fgetcsv() pour lire chaque ligne du fichier et stocker les résultats dans un tableau.
PHPExcel est une extension PHP très puissante pour créer et manipuler des fichiers Excel. Nous pouvons télécharger PHPExcel et l'inclure dans notre projet PHP. Voici comment créer un fichier Excel vide :
require_once 'PHPExcel.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('Sheet1');
Ce code utilise PHPExcel pour créer un fichier Excel vide et définit une feuille de calcul par défaut.
En utilisant la méthode setCellValue() dans PHPExcel, nous pouvons importer des données de fichiers CSV dans des fichiers Excel. Voici un exemple de code :
require_once 'PHPExcel.php'; $csvFile = 'data.csv'; if(!file_exists($csvFile)) { die("File not found"); } $csvData = file_get_contents($csvFile); $data = array_map("str_getcsv", preg_split('/\r*\n+|\r+/', $csvData)); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('Sheet1'); $row = 1; foreach($data as $fields) { $col = 0; foreach($fields as $value) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); $col++; } $row++; }
Ce code utilise d'abord la fonction file_get_contents() pour lire le contenu du fichier CSV, puis utilise la fonction preg_split() pour diviser le contenu du fichier en un tableau bidimensionnel. Ensuite, nous utilisons la fonction setCellValueByColumnAndRow() de PHPExcel pour importer les données dans le fichier Excel.
Enfin, nous utilisons la méthode save() de PHPExcel pour enregistrer le fichier au format XLS ou XLSX. Voici l'exemple de code complet :
require_once 'PHPExcel.php'; $csvFile = 'data.csv'; if(!file_exists($csvFile)) { die("File not found"); } $csvData = file_get_contents($csvFile); $data = array_map("str_getcsv", preg_split('/\r*\n+|\r+/', $csvData)); $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->setTitle('Sheet1'); $row = 1; foreach($data as $fields) { $col = 0; foreach($fields as $value) { $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value); $col++; } $row++; } $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); $objWriter->save('data.xls');
Ce code importe des données dans un objet PHPExcel et utilise la méthode createWriter() de PHPExcel_IOFactory pour générer un objet Excel5Writer permettant d'enregistrer l'objet PHPExcel sous forme de fichier au format XLS. A noter que pour utiliser le format Excel2007 (XLSX), vous devez changer Excel5 en Excel2007.
Résumé
Ce qui précède est le processus complet de conversion de fichiers CSV en fichiers Excel. Lisez d'abord le fichier CSV, puis importez les données dans un objet PHPExcel et enregistrez l'objet PHPExcel en tant que fichier Excel. Il convient de noter que dans les applications réelles, nous devrons peut-être effectuer une vérification du format et un nettoyage des données importées pour garantir l'intégrité et l'exactitude des données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!