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] Conversion PHP vers Excel


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut [Excel] Conversion PHP vers Excel
    Bonjour,
    je rencontre un problème lors de l'ouverture d'un fichier excel généré via php.
    Excel me demande :
    L'assistant Texte à déterminé que vos données sont de type Délimité.

    Lorsque je valide ( Délimité) le fichier excel s'ouvre correctement.

    Comment faire pour que le fichier généré s'ouvre automatiquement sans que cette question soit posée ?

    Code php :

    $csv_output = "Code\tNom\tFormule\tPoids\tPrix\tDescriptif\tCible\n";

    $csv_output.= "codevaleur"."\t".'nom_prod'."\t".'formule_prod'."\t".'poids_prod'."\t".'prix_prod'."\t".'descriptif_prod'."\n";
    //header("Content-type: application/vnd.ms-excel");
    header('Content-Type: application/octet-stream; charset=iso-8859-1');
    header("Content-disposition: attachment; filename=export_table_produits_" . date("Ymd").".xls");
    print $csv_output;
    exit;

    Vous remerciant

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Bonjour,

    Solution rapide
    Utiliser l'extension CSV plutôt que XLS.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-disposition: attachment; filename=export_table_produits_" . date("Ymd").".csv");
    C'est dommage de restreindre à Excel alors que le fichier produit peut être lu par beaucoup plus de logiciels que ça.

    Solution à essayer
    A la place des tabulations, il faudrait mettre des "," ou ";" (l'un s'ouvrira directement avec un Excel FR et l'autre directement avec un Excel EN, je ne sais plus lequel de tête).

    Solution "ultime" (!)

    L'outil dédié & actif, PHPExcel, c'est par ici : http://www.codeplex.com/PHPExcel

    Bon courage,

    Karl3i.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Merci pour la réponse,

    Concernant l'utilisation d'excel il s'agit d'une demande spécifique donc je dois créer du XLS.

    L'utilisation de virgules ou point virgule ne fonctionne pas ( soit il les rajoute dans le texte soit il écrit tout dans la même cellule si je ne met pas de tabulation). L'extention mise sur csv permet d'ouvrir le fichier via excel mais avec des caractères bizarres (les tabulations sont transformées en carrés et tout est dans la même cellule).

    Je vais essayer d'utiliser la librairie phpExcel dès que quelqu'un d'habilité à utiliser internet sans restrictions voudra bien le télécharger, mais je trouve dommage de compliquer la transformation vers XLS, alors que la méthode utilisée était suffisante, hormis la question posée par excel à l'ouverture du fichier.
    En plus j'ai vu sur sur le tuto "Communication entre PHP et Excel via l'objet COM" que cela ne fonctionnait que si php était hébergé sur une plateforme windows ce qui n'est pas mon cas.
    Si il y a d'autres idées, je suis preneur,
    Merci

  4. #4
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Points : 13
    Points
    13
    Par défaut
    L'utilisation de l'extention csv est possible donc avec des points virgules à la place des tabulations cela fonctionne correctement et s'ouvre directement avec excel.

    Merci

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    336
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 336
    Points : 341
    Points
    341
    Par défaut
    Ok. Pour la deuxième solution, j'avais effectivement oublié de préciser que ça ouvrait Excel directement avec l'extension CSV (à noter que tes utilisateurs peuvent aussi avoir associé l'extension CSV à un autre logiciel, et notamment ceux qui sont sous Linux...).

    Sinon une autre solution consiste à générer un fichier équivalent à :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    <html xmlns:o="urn:schemas-microsoft-com:office:office"
    xmlns:x="urn:schemas-microsoft-com:office:excel"
    xmlns="http://www.w3.org/TR/REC-html40">
     
    <head>
    <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
    <meta name=ProgId content=Excel.Sheet>
    <meta name=Generator content="Microsoft Excel 11">
    <link rel=File-List href="Classeur1_fichiers/filelist.xml">
    <style id="Classeur1_8930_Styles">
    <!--table
    	{mso-displayed-decimal-separator:"\,";
    	mso-displayed-thousand-separator:" ";}
    .xl158930
    	{padding-top:1px;
    	padding-right:1px;
    	padding-left:1px;
    	mso-ignore:padding;
    	color:windowtext;
    	font-size:10.0pt;
    	font-weight:400;
    	font-style:normal;
    	text-decoration:none;
    	font-family:Arial;
    	mso-generic-font-family:auto;
    	mso-font-charset:0;
    	mso-number-format:General;
    	text-align:general;
    	vertical-align:bottom;
    	mso-background-source:auto;
    	mso-pattern:auto;
    	white-space:nowrap;}
    -->
    </style>
    </head>
     
    <body>
    <!--[if !excel]>&nbsp;&nbsp;<![endif]-->
    <!--Les informations suivantes ont été générées par l'Assistant Publier en tant
    que page Web de Microsoft Office Excel.-->
    <!--SI vous republiez le même élément à partir d'Excel, toutes les informations
    entre les balises DIV seront remplacées.-->
    <!----------------------------->
    <!--DÉBUT DE LA SORTIE À PARTIR DE L'ASSISTANT PUBLIER EN TANT QUE PAGE WEB
    D'EXCEL -->
    <!----------------------------->
     
    <div id="Classeur1_8930" align=center x:publishsource="Excel">
     
    <table x:str border=0 cellpadding=0 cellspacing=0 width=240 style='border-collapse:
     collapse;table-layout:fixed;width:180pt'>
     <col width=80 span=3 style='width:60pt'>
     <tr height=17 valign=bottom style='height:12.75pt'>
      <td height=17 class=xl158930 width=80 style='height:12.75pt;width:60pt'>produit</td>
      <td class=xl158930 width=80 style='width:60pt'>description</td>
      <td class=xl158930 width=80 style='width:60pt'>toto</td>
     </tr>
     <![if supportMisalignedColumns]>
     <tr height=0 style='display:none'>
      <td width=80 style='width:60pt'></td>
      <td width=80 style='width:60pt'></td>
      <td width=80 style='width:60pt'></td>
     </tr>
     <![endif]>
    </table>
     
    </div>
     
     
    <!----------------------------->
    <!--FIN DE LA SORTIE À PARTIR DE L'ASSISTANT PUBLIER EN TANT QUE PAGE WEB
    D'EXCEL-->
    <!----------------------------->
    </body>
     
    </html>
    Voir les champs : produit, description, toto

    Si ce fichier a l'extension XLS, il s'ouvre directement dans Excel (en tout cas pour la version 2003).

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

Discussions similaires

  1. [Excel] Exporter un tableau PHP vers CSV ou XLS
    Par mariafan dans le forum Bibliothèques et frameworks
    Réponses: 20
    Dernier message: 28/10/2011, 11h53
  2. Aide pour conversion php vers Asp
    Par jidébé dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2007, 22h10
  3. [Oracle] exportation oracle php vers Excel
    Par atef83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/05/2007, 10h59
  4. [Excel] Exporter un tableau d'une page php vers un fichier Excel
    Par griese dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 04/07/2006, 10h50

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