Conversion fichier excel vers csv avec php

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

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:

6 réponses

Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003
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.


Messages postés
2653
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
26 janvier 2022
486
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
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
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
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003
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";
}

Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
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';





Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003
ok.
Et qu'en est il des droits ?
As tu testé le code que je t'ai donné ? qu'est ce ça donne ? pas de message d'erreur ?
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
Oui oui j'ai testé mais aucune erreur par rapport au chemin il arrive a trouver le fichier :

et voila l'erreur :
Fatal error: Uncaught exception 'PHPExcel_Reader_Exception' with message 'Could not open ../test_batch_solsys.xls for reading! File does not exist, or it is not readable.' in C:\wamp\www\chaima\speed-wear.net\web\batchs\Classes\PHPExcel\Shared\OLERead.php on line 80
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003 >
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015

Vu le message d'erreur ...... soit le fichier n'est pas trouvé (et cela vu que tu utilises des chemins relatifs) .. soit un processus Excel l'utilise déjà et le rend non accessible...

Pourrais tu donc .... mettre le chemin ABSOLU depuis LA RACINE DE TON SITE et voir si ça ne marcherait pas mieux ??
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
En vain c'est pas a cause du chemin j'ai mis le fichier php ainsi que le fichier excel depuis la racine mais rien n'y fait
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003 >
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015

le fichier PHP ? de quel fichier parles tu ?
Peux tu nous montrer le code avec les chemins "modifiés" ?
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003
Au niveau de ta page PHP, ajoute la ligne suivante :
error_reporting(E_ALL);


cela devrait te permettre de voir les éventuelles erreurs PHP.



Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
Bonjour, J'ai intégré cette ligne de code mais il ne m'affiche aucune erreur mais ça marche pas quand même !
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003
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



Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
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 :/
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003 >
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015

Merci de répondre en FRANCAIS.
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
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
Messages postés
34725
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
27 janvier 2022
4 003
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 !
Messages postés
94
Date d'inscription
mercredi 17 juin 2015
Statut
Membre
Dernière intervention
3 septembre 2015
2
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)