Conversion fichier excel vers csv avec php

Résolu
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

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

6 réponses

Résumé de la discussion

La problématique porte sur la conversion d’un fichier Excel en CSV via PHPExcel, confrontée à une erreur fatale indiquant que le fichier n’existe pas et empêchant le chargement. Plusieurs réponses suggèrent de vérifier les chemins et les droits d’accès, d’utiliser des chemins absolus et d’ajouter des tests tels que file_exists pour s’assurer que le fichier est présent. D’autres contributions recommandent d’activer error_reporting pour déceler d’éventuelles erreurs PHP, de vérifier l’emplacement des fichiers et de tester avec le même chemin dans le script et le navigateur. D’autres fournissent des précisions techniques, comme vérifier l’extension exacte et s’assurer que le lecteur PHPExcel correspond au format réel du fichier, afin d’éviter une incompatibilité qui bloque le chargement.

Bobot (l’IA à votre service)
  1. Modérateur
    Bonjour,

    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


    1. I work in the FTP so I changed the paths by deleting www etc and when I run there's no erros but as usual it didn't work ! Sorry :/
    2. Ah je suis désolée,
      Alors je travaille directement sur l'FTP ! donc j'ai changé les chemins la ou mon fichier xls y est ! je lance aucune erreur mais ça marche pas quand mm
    3. Modérateur
      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 !
    4. Oui je lance mon script depuis mon navigateur (644) pour l'accès!
      Ok je vais l'essayer en local sous www
      et je l'ai mis sous /web (dans l'FTP)