Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Bureautique
Bureautique Forum d'entraide sur la gestion dynamique de documents de bureautique (Word, Excel, OpenOffice...) avec PHP. Avant de poster -> Cours Excel, FAQ OpenXML, FAQ OpenDocument
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2007, 11h13   #1
Membre du Club
 
Jonathan
Inscription : mars 2006
Messages : 58
Détails du profil
Informations personnelles :
Nom : Jonathan
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2006
Messages : 58
Points : 45
Points : 45
Envoyer un message via Skype™ à AntaresJon
Par défaut De xls vers csv sans objet COM (php4 sous linux)

J'aimerai beaucoup faire gagner du temps a mes utilisateurs qui doivent, à chaque commandes qu'on leur passe, modifier le fichier xls en csv, et donc si j'arrivais à faire un petit script php qui ferait ça automatiquement ça serait vraiment bien (voilà pour la petite histoire dont tout le monde s'en fout).

Pour ce faire, j'aimerai communiquer et lire un fichier xls, sans utilisé l'objet COM (car je suis en php4, pas encore objet) et sans utilisé un Excel installé (car le serveur tourne sous linux). J'apporte ces précisions car même ici, je n'ai trouvé que des solutions avec ces 2 conditions.

A partir du moment où j'arriverai à lire le fichier xls, j'arriverai sans trop de peine à le transphormer en csv je pense.

Bien que je m'attends à la réponse "c'est impossible, microsoft n'aime pas qu'on touche ses fichiers sans qu'on investisse chez eux", mais comme c'est une réponse qui me satsifera que quand j'aurai tout tenté pour trouver la solution, je demande votre aide.
AntaresJon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 15h46   #2
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
c'est impossible, microsoft n'aime pas qu'on touche ses fichiers sans qu'on investisse chez eux.

Plus sérieusement, je ne sais pas. J'ai déjà cherché la même chose que toi, sans succès, mais bon j'y avais pas passé très longtemps.
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 16h15   #3
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut, est-ce que t'as essayé http://www.linuxmanpages.com/man1/xls2csv.1.php
?
Il faut évidemment que t'aies accès au bash.

ou ca : http://freshmeat.net/projects/phpexcelreader/

Après ca dépend aussi de la version du xls à mon avis.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 16h17   #4
Membre du Club
 
Jonathan
Inscription : mars 2006
Messages : 58
Détails du profil
Informations personnelles :
Nom : Jonathan
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2006
Messages : 58
Points : 45
Points : 45
Envoyer un message via Skype™ à AntaresJon
non, j'ai pas essayé et oui j'ai acces au batch, ça a le mérite d'être testé, je m'y mes direct.
AntaresJon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2007, 16h53   #5
Membre du Club
 
Jonathan
Inscription : mars 2006
Messages : 58
Détails du profil
Informations personnelles :
Nom : Jonathan
Âge : 28
Localisation : Belgique

Informations forums :
Inscription : mars 2006
Messages : 58
Points : 45
Points : 45
Envoyer un message via Skype™ à AntaresJon
effectivement, ça marche tranquille, pour ceux qui auraient le même problème, voici la source que j'utilise, à vous de l'adapté peut-être plus joliement d'près vos besoins:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function xlstocsv($nom_source) {
 
copy($nom_source, '/tmp/excel-'.$_SERVER['REMOTE_ADDR'].'.xls'); 
// copie le fichier dans un repertoire temporaire
 
exec('xls2csv -c ";" /tmp/excel-'.$_SERVER['REMOTE_ADDR'].'.xls >/tmp/excel-'.$_SERVER['REMOTE_ADDR'].'.csv'); 
//change le xls dans le repertoire temporaire en csv séparé par des ;
 
copy('/tmp/excel-'.$_SERVER['REMOTE_ADDR'].'.csv',str_replace('.xls','.csv',$nom_source)); 
//copie le fichier temporaire modifié à coté du fichier source (en changeant juste l'extension)
 
exec('/bin/rm /tmp/excel-'.$_SERVER['REMOTE_ADDR'].'.xls');
exec('/bin/rm /tmp/excel-'.$_SERVER['REMOTE_ADDR'].'.csv'); 
// efface le fichier dans le dossier temporaire
}
 
}
AntaresJon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2009, 16h24   #6
Membre habitué
 
Inscription : juillet 2006
Messages : 282
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 282
Points : 106
Points : 106
Bonjour,

J'ai la même problèmatique. Mais ne connaissant pas Unix, ni le batch, comment implémenter la solution ?

Merci de votre aide.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2009, 17h13   #7
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Salut,
tu peux tenter de mettre :

Code :
1
2
echo exec('man', $output);
var_dump($output);
dans une page vide .php, si tu as quelque chose du style "what manual page do you want ?" qui s'affiche, c'est que t'es sous linux et que tu peux lancer des exécutables sur ton serveur. Donc la solution proposée fonctionnera si xls2csv est installé (tu replaces 'man' par 'xls2csv' dans le code au-dessus), sinon tu peux regarder du côté de phpexcelreader que soit dit en passant je n'ai jamais testé.

Pour info je pense qu'il y a un problème potentiel dans le code proposé. Etant donné que l'uid du serveur est le même pour tous les scripts, il est peut-être possible qu'il y ait un problème d'accès concurrentiel aux fichiers temporaires. L'idéal aurait été de les nommer avec un identifiant unique aléatoire (id de session, par exemple).
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h15.


 
 
 
 
Partenaires

Hébergement Web