Conversion fichier excel vers csv avec php [Résolu/Fermé]
Signaler
chaima.abdouli
jiji -
- Messages postés
- 94
- Date d'inscription
- mercredi 17 juin 2015
- Statut
- Membre
- Dernière intervention
- 3 septembre 2015
jiji -
Bonjour,
Je suis entrain de préparer un script permettant de convertir les fichiers excel en csv mais ça ne marche pas! j'ai l'erreur suivante lorsque je le lance
Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open ../public/mad/test_batch_solsys for reading! File does not exist.' in C:\wamp\www\chaima\speed-wear.net\web\batchs\Classes\PHPExcel\Reader\Excel5.php on line 443
voici le code ci dessous
J'ai vérifié tous les chemins et les fichiers mais en vain
Je suis entrain de préparer un script permettant de convertir les fichiers excel en csv mais ça ne marche pas! j'ai l'erreur suivante lorsque je le lance
Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open ../public/mad/test_batch_solsys for reading! File does not exist.' in C:\wamp\www\chaima\speed-wear.net\web\batchs\Classes\PHPExcel\Reader\Excel5.php on line 443
voici le code ci dessous
require_once 'Classes/PHPExcel/IOFactory.php'; $inputFileType = 'Excel5'; $inputFileName = '../public/mad/test_batch_solsys.xls'; $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcelReader = $objReader->load($inputFileName); $loadedSheetNames = $objPHPExcelReader->getSheetNames(); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcelReader, 'CSV'); foreach($loadedSheetNames as $sheetIndex => $loadedSheetName) { $objWriter->setSheetIndex($sheetIndex); $objWriter->save($loadedSheetName.'.csv'); }
J'ai vérifié tous les chemins et les fichiers mais en vain
A voir également:
- Xls to csv php
- Xlsx to csv php - Meilleures réponses
- Convert excel to csv php - Meilleures réponses
- Conversion fichier excel vers csv avec php ✓ - Forum - PHP
- Fichier excel vers csv - Forum - Logiciels
- Conversion fichier xlsx vers xls avec Excel 2003 ✓ - Forum - Bureautique
- Convertir fichier excel en csv (séparateur virgule) ✓ - Forum - Excel
- Importer des données d'un fichier excel vers un autre - Forum - Excel
6 réponses
jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Bonjour,
1 - Essayes autant que possible d'utiliser le chemin absolu en partant de la racine de ton site (donc depuis le www ) plutôt que des chemins relatifs.
2 - Vérifies les droits sur le répertoire où se trouve ton fichier.
1 - Essayes autant que possible d'utiliser le chemin absolu en partant de la racine de ton site (donc depuis le www ) plutôt que des chemins relatifs.
2 - Vérifies les droits sur le répertoire où se trouve ton fichier.
Pitet
- Messages postés
- 2371
- Date d'inscription
- lundi 11 février 2013
- Statut
- Membre
- Dernière intervention
- 13 janvier 2021
Salut,
Pourtant il semble bien que le chemin vers le fichier xls soit incorrect.
D'après le message d'erreur, le fichier test_batch_solsys.xls serait situé dans le dossier C:\wamp\www\chaima\speed-wear.net\web\batchs\Classes\PHPExcel\public\mad\, est-ce le cas ?
Sinon essaye de renseigner le chemin absolu vers ce fichier.
Bonne journée
Pourtant il semble bien que le chemin vers le fichier xls soit incorrect.
D'après le message d'erreur, le fichier test_batch_solsys.xls serait situé dans le dossier C:\wamp\www\chaima\speed-wear.net\web\batchs\Classes\PHPExcel\public\mad\, est-ce le cas ?
Sinon essaye de renseigner le chemin absolu vers ce fichier.
Bonne journée
chaima.abdouli
- Messages postés
- 94
- Date d'inscription
- mercredi 17 juin 2015
- Statut
- Membre
- Dernière intervention
- 3 septembre 2015
Non parce que j'ai deux codes j'ai copié celui avec le mauvais chemin mais j'ai bien re vérifié ce n'est pas les chemins qui posent problème ici
jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Non parce que j'ai deux codes j'ai copié celui avec le mauvais chemin mais j'ai bien re vérifié ce n'est pas les chemins qui posent problème ici
Dans ce cas, postes nous le code qui pose problème....
Et éventuellement... ajoutes y un petit test pour savoir si le fichier existe dans le chemin spécifié...
un truc du genre :
$fichier = "chemin_vers_ton_fichier/le_fichier.xls"; if( !file_exists($fichier)){ echo "<br> Erreur : Fichier $fichier introuvable"; }
chaima.abdouli
- Messages postés
- 94
- Date d'inscription
- mercredi 17 juin 2015
- Statut
- Membre
- Dernière intervention
- 3 septembre 2015
c'est le code en question :
/** Convert excel file to csv */ //Various excel formats supported by PHPExcel library $excel_readers = array( 'Excel5' , 'Excel2003XML' , 'Excel2007' ); require_once('../batchs/Classes/PHPExcel.php'); $reader = PHPExcel_IOFactory::createReader('Excel5'); $reader->setReadDataOnly(true); $path = '../test_batch_solsys.xls'; $excel = $reader->load($path); $writer = PHPExcel_IOFactory::createWriter($excel, 'CSV'); $writer->save('../test_batch_solsys.xls'); echo 'File saved to csv format';
jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Je vois toujours des chemins RELATIFS et non ABSOLUS dans ce que tu as écrit !!!!
Donc... si on considère que tu as, dans ton répertoire www un fichier nommé web .. le chemin absolu serait :
Donc... si on considère que tu as, dans ton répertoire www un fichier nommé web .. le chemin absolu serait :
<?php $DOC_ROOT = $_SERVER['DOCUMENT_ROOT']; $DOC_ROOT = substr($DOC_ROOT, -1) == "/" ? $DOC_ROOT : $DOC_ROOT."/"; /** Convert excel file to csv */ //Various excel formats supported by PHPExcel library $excel_readers = array( 'Excel5' , 'Excel2003XML' , 'Excel2007' ); $fichier =$DOC_ROOT.'web/test_batch_solsys.xlsx';; if( !file_exists($fichier)){ echo "<br> Erreur : Fichier $fichier introuvable"; } require_once('../web/batchs/Classes/PHPExcel.php'); $reader = PHPExcel_IOFactory::createReader('Excel5'); $reader->setReadDataOnly(true); $excel = $reader->load($fichier); $writer = PHPExcel_IOFactory::createWriter($excel, 'CSV'); $writer->save($DOC_ROOT.'web/test_batch_solsys.csv'); echo 'File saved to csv format';
jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Si ce n'est pas le chemin c'est que c'est sûrement l'autre partie du message d'erreur ... la possibilité de l'ouvrir en lecture...
Donc :
- Quels sont les droits sur le répertoire qui contient le fichier Excel à lire ?
- Aucun autre processus Excel ne tourne ? (ce qui pourrait bloquer le fichier)
- Tu as bien un chemin différent entre la lecture... et l'écriture en csv ? (car au début.. tu essayais d'écraser le fichier ouvert....) ?
- As tu essayé de redémarrer ton serveur pour voir si le souci persiste après ?
Donc :
- Quels sont les droits sur le répertoire qui contient le fichier Excel à lire ?
- Aucun autre processus Excel ne tourne ? (ce qui pourrait bloquer le fichier)
- Tu as bien un chemin différent entre la lecture... et l'écriture en csv ? (car au début.. tu essayais d'écraser le fichier ouvert....) ?
- As tu essayé de redémarrer ton serveur pour voir si le souci persiste après ?
chaima.abdouli
- Messages postés
- 94
- Date d'inscription
- mercredi 17 juin 2015
- Statut
- Membre
- Dernière intervention
- 3 septembre 2015
mtn avec ce code je n'ai plus d'erreur mais ça marche pas !
echo("it works"); require_once('../batchs/Classes/PHPExcel.php'); convertXLStoCSV('../public/aixstream/stock.xls','../public/aixstream/stock.csv'); function convertXLStoCSV($infile,$outfile) { $fileType = PHPExcel_IOFactory::identify($infile); $objReader = PHPExcel_IOFactory::createReader($fileType); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load($infile); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'CSV'); $objWriter->save($outfile); } echo("it works");
jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Au niveau de ta page PHP, ajoute la ligne suivante :
cela devrait te permettre de voir les éventuelles erreurs PHP.
error_reporting(E_ALL);
cela devrait te permettre de voir les éventuelles erreurs PHP.
jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Bonjour,
Le code suivant fonctionne parfaitement :
Par contre.. il faut bien penser à activer certaines extensions dans ton wamp :
php_zip
php_xml (et/ou php_xmlrpc )
php_gd2

Le code suivant fonctionne parfaitement :
<?php //Afffichage des erreurs PHP error_reporting(E_ALL); $DOC_ROOT = $_SERVER['DOCUMENT_ROOT']; $DOC_ROOT = substr($DOC_ROOT, -1) == "/" ? $DOC_ROOT : $DOC_ROOT."/"; //Mon site se trouve dans le www/web/ $DIR_SITE = $DOC_ROOT."web/"; $fichierIN = $DIR_SITE."Classeur1.xlsx"; $fichierOUT = $DIR_SITE."test_batch_solsys.csv"; // On importe PHPExcel $phpXlFile = $DIR_SITE."/batchs/Classes/PHPExcel.php"; $phpXLfactory = $DIR_SITE."/batchs/Classes/PHPExcel/IOFactory.php"; if( !file_exists($phpXlFile)){ echo "<br> Erreur : Fichier $phpXlFile introuvable"; exit(); } if( !file_exists($phpXLfactory)){ echo "<br> Erreur : Fichier $phpXLfactory introuvable"; exit(); } require_once $phpXlFile; require_once $phpXLfactory; if( !file_exists($fichierIN)){ echo "<br> Erreur : Fichier $fichierIN introuvable"; exit(); } try { $inputFileType = PHPExcel_IOFactory::identify($fichierIN); $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $objReader->load($fichierIN); $objWriter = new PHPExcel_Writer_CSV($objPHPExcel); $objWriter->save($DOC_ROOT.'web/test_batch_solsys.csv'); echo 'File saved to csv format'; } catch(Exception $e) { die('Error loading file "'.pathinfo($fichierIN,PATHINFO_BASENAME).'": '.$e->getMessage()); }
Par contre.. il faut bien penser à activer certaines extensions dans ton wamp :
php_zip
php_xml (et/ou php_xmlrpc )
php_gd2

jordane45
- Messages postés
- 31204
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 26 janvier 2021
Un FTP ?? Oo ... à aucun moment tu ne nous a parlé de ça !!
Quoi qu'il en soit :
Tu lances ton script Comment ? Depuis ton navigateur ?
Peux tu faire le test en mettant les fichiers dans ton répertoire www ?
=> Qu'est-ce que ça donne ?
J'ai personnellement testé ce script sur mon Poste avec un WAMP ... et il fonctionne....
Donc.. si ça ne fonctionne pas chez toi.. c'est qu'il y a un autre souci.. qui ne me semble pas venir du code en lui-même...
Comme en plus tu passes par un FTP ... il se peut, comme je l'ai déjà demandé à plusieurs reprises...., qu'il s'agisse d'un souci de Droits D'accès aux fichiers !
Quoi qu'il en soit :
Tu lances ton script Comment ? Depuis ton navigateur ?
Peux tu faire le test en mettant les fichiers dans ton répertoire www ?
=> Qu'est-ce que ça donne ?
J'ai personnellement testé ce script sur mon Poste avec un WAMP ... et il fonctionne....
Donc.. si ça ne fonctionne pas chez toi.. c'est qu'il y a un autre souci.. qui ne me semble pas venir du code en lui-même...
Comme en plus tu passes par un FTP ... il se peut, comme je l'ai déjà demandé à plusieurs reprises...., qu'il s'agisse d'un souci de Droits D'accès aux fichiers !
chaima.abdouli
- Messages postés
- 94
- Date d'inscription
- mercredi 17 juin 2015
- Statut
- Membre
- Dernière intervention
- 3 septembre 2015
ça marche bien c'est bon c'est reglé pour l'xsl mais en FTP je n'ai pas su comment changer
ça rt j'ai vérifié l'acces tout est OK il me reste que ça et merci beaucoup encore une fois
ça rt j'ai vérifié l'acces tout est OK il me reste que ça et merci beaucoup encore une fois
$DOC_ROOT = $_SERVER['DOCUMENT_ROOT']; $DOC_ROOT = substr($DOC_ROOT, -1) == "/" ? $DOC_ROOT : $DOC_ROOT."/"; //Mon site se trouve dans le www/web/ $DIR_SITE = $DOC_ROOT."web/";