IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[Excel] De xls vers csv sans objet COM (php4 sous linux)


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2006
    Messages : 63
    Points : 67
    Points
    67
    Par défaut [Excel] 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.

  2. #2
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    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.

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    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.
    Vive les roues en pierre

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2006
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    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.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2006
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2006
    Messages : 63
    Points : 67
    Points
    67
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    }
     
    }

  6. #6
    Membre habitué

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    289
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 289
    Points : 161
    Points
    161
    Par défaut
    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.

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 022
    Points : 2 273
    Points
    2 273
    Par défaut
    Salut,
    tu peux tenter de mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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).
    Vive les roues en pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SSIS] [2K5] Converstion xls vers csv
    Par jeud84 dans le forum SSIS
    Réponses: 1
    Dernier message: 26/05/2010, 15h39
  2. [XL-2003] Copier de données d'un fichier xls vers csv
    Par gandalf20000000 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/09/2009, 15h20
  3. .xls vers .csv ou . txt
    Par fthem dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 24/09/2008, 16h31
  4. Exporter fichier XLS vers CSV
    Par arnaud_verlaine dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/09/2007, 17h47
  5. [Excel] Générer XLS sans objet COM
    Par jfberub dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 06/01/2007, 02h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo