Récupération de valeurs sous forme de variables en php

Eléphant du PHP | 89 Messages

08 déc. 2007, 10:46

Bonjour à tous!

J'utilise sous PHP/Mysql et avec la commande exec l'utilitaire gratuit Xls2csv.exe pour transformer automatiquement des fichiers Excel en CSV.
Tout fonctionne parfaitement quand le doc excel ne contient qu'une seule feuille.
En revanche il arrive que le XLS contienne plusieurs feuilles, dans ce cas il suffit de faire en ligne de commande:
c:\>xls2csv -x "toto.xls" -W
et en php
exec('xls2csv -x '.$dossier.''.$fichier' -W)
ce qui donne comme résultat:

The following 3 worksheets are defined in the spreadsheet:

tata
titi
tutu


Comment en php, recupérer ces valeurs sous forme de variables afin de pouvoir choisir la feuille a transformer?

ViPHP
ViPHP | 4674 Messages

08 déc. 2007, 13:31

Peut être qu'un petit tour dans la documentation te ferait le plus grand bien (indice, voir l'&output).

Et au passage :
exec('xls2csv -x '.$dossier.''.$fichier' -W)
peut s'écrire
exec('xls2csv -x '.$dossier.$fichier.' -W)
(le .''. ne sert à rien).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 89 Messages

08 déc. 2007, 14:09

J'avais bien vu cette commande output sur la doc PHP avant de poser ma question sur le forum. D'ou l'utilité d'un forum....

En fait: comment afficher mes valeurs dans un tableau afin de pouvoir choisir le ou les feuilles Excel à convertir?

J'ai bien essayé ceci...Mais je n'obtiens rien
exec('csv_bin/xls2csv -x $dossier.$fichier. -W', $output);
while( list(,$row) = each($output) ) {
echo $row;

        }

ViPHP
ViPHP | 4674 Messages

08 déc. 2007, 14:16

Non. Ta valeur de sortir est une chaîne de caractères. Tu dois utiliser les expressions régulières (voir preg_match()) pour avoir un tableau par exemple, sur lequel tu pourras manipuler tes données plus facilement.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 89 Messages

08 déc. 2007, 14:30

je suis allé voir cette fonction et je suis désolé d'être un peu lourd, mais puisque tu as la solution pourrais tu me la donner afin que dans un tableau je puisse aficher le résultat de ma commande
c'est à dire
  • tata
    titi
    tutu
Merci beaucoup!

ViPHP
ViPHP | 4674 Messages

08 déc. 2007, 14:47

Au temps pour moi, j'ai lu trop vite.
Ta sortie est un tableau où chaque entrée correspond à une ligne renvoyée par la commande. C'est encore plus simple.
Donc si tu fais quelque chose du genre :
exec('ta commande', $output);
print_r($output);
Tu devrais avoir un résultat du genre :

Code : Tout sélectionner

Array ( 0 => 'The following 3 ...', 1 => '', 2 => 'tata', 3 => 'titi', 4 => 'tutu' )
d'après ce que tu me dis.
Donc, pour enlever les 2 premières lignes :
unset($output[0], $output[1]);
print_r($output);
Et tu devrais avoir quelque chose comme :

Code : Tout sélectionner

Array( 0 => 'tata', 1 => 'titi', 2 => 'tutu' )
Je n'ai pas testé, mais ça devrait ressembler fortement à ça.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Eléphant du PHP | 89 Messages

08 déc. 2007, 15:08

j'ai suivi tes conseils et j'obtiens
Array ( ) 
pourtant en ligne de commande DOS j'ai bien trois feuilles

ViPHP
ViPHP | 4674 Messages

08 déc. 2007, 15:14

Même avant les unsets ? Sinon, bah utiliser un preg_match_all pour parser ta réponse.
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).