Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 10/01/2007, 11h51   #1
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Par défaut [CSV] Formatage d'un CSV

Bonjour,

J'ai une fonction php qui permet de générer un fichier csv avec des données issues d'une requête (Base Mysql).
ca fonctionne trés bien, sauf que le résultat de la requête se met dans une seul cellule du fichier csv une fois ouvert par l'utilisateur sous Excel
Voici le code de la fonction

Code :
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
 
 
function ExportCsv ()
{
$resQuery = ExecRequete($_SESSION['Requete']);
 
	$Fic = str_replace(array(dirname($_SERVER['PHP_SELF'])."/", ".php"), "", $_SERVER['PHP_SELF']) 
		. "_". date(Y)."_".date(d)."_".date(m)."_".date(s)."_".date(i)."_".date(G);
 
	header("Content-Type: application/vnd.ms-excel");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("content-disposition: attachment;filename=$Fic.csv");
	$text = "<table>";
	$text .= "<tr><td>Export données Web Gestuo</td></tr>";
	$text .= "</table>";
	echo $text;
 
  if (mysql_num_rows($resQuery) != 0) 
  {
	    // titre des colonnes
	    $fields = mysql_num_fields($resQuery);
	    $i = 0;
	    while ($i < $fields) 
	    {
	      echo mysql_field_name($resQuery, $i).",";
	      $i++;
	    }
	    echo "\n";
 
	    // données de la table
	    while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) 
	    {
		     foreach($arrSelect as $elem) 
		     {
		      echo "$elem,";
 
		     }
		     echo "\n";
	    }
}
Le résultat donne ca :

Citation:
Date,Nom,Libelle,Stat,Nbre, 2007-01-092007-01-09,Autre, classique,166.3797,1949, 2007-01-092007-01-09,Autre, classique,163.9209,707, 2007-01-092007-01-09,Autre, classique,173.9459,3014,
Le résulat que je voudrai c'est ca :

Citation:
Date Nom Libelle stat Nbre
092007-01-09 Autre classique 166.3797,1949 1949
092007-01-09 Autre classique 163.9209,707 707
092007-01-09 Autre classique 173.9459,3014 3014

Quelqu'un aurait une idée pour formater le résultat sous le format ci-dessus

Merci d'avance,
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 11h57   #2
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
C'est Excel qui ouvre le CSV comme ça si tu double cliques sur le fichier. Pour qu'il l'ouvre bien il faut lancer Excel puis faire ouvrir un fichier dans le menu. Ton CSV est bien formé en tout cas comme tu fais.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 12h50   #3
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Jsutement c'est déja le cas (Excel ouvre le csv), mais le probléme c'est que toutes les données se mettent dans une même cellule (la première celulle A1)
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 13h58   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Je viens d'essayer et j'ai inversé les deux versions. Chez moi en double-cliquant sur le fichier CSV il s'ouvre proprement, mais en lançant d'abord Excel puis en faisant "ouvrir un fichier" ça fait comme toi, et pour que l'affichage soit bon il faut aller dans le menu "Données => Convertir" et choisir le délimiteur.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 14h02   #5
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
oui, c'est que c'est une solution
mais comme les utilisateurs n'ont que des notions de bases sur xls
j'aurais préféré leur donner la possibilité d'ouvrir directement le fichier formaté
sinon, je sai qu'il ne s'en sortiront pas
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 14h34   #6
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par nbelg27
oui, c'est que c'est une solution
mais comme les utilisateurs n'ont que des notions de bases sur xls
j'aurais préféré leur donner la possibilité d'ouvrir directement le fichier formaté
sinon, je sai qu'il ne s'en sortiront pas
Chez toi en doublr cliquant ça met tout dans la première cellule c'est ça ? Malheureusement je pense que c'est Excel qui fait sa sauce et qu'on y peut pas grand chose, essaie peut-être de mettre le point-virgule en délimiteur on sait jamais...
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 14h59   #7
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Merci, mais j'ai déja essayé et ca marche pas
le seul truc qui marche
c'est d'ouvrir Excel et seulement ensuite faire fichier -> ouvrir ...

s'il y a un autre moyen pour générer directement un xls je suis preneur

merci
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 15h47   #8
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par nbelg27
Merci, mais j'ai déja essayé et ca marche pas
le seul truc qui marche
c'est d'ouvrir Excel et seulement ensuite faire fichier -> ouvrir ...
On s'est mal compris c'est ce que je t'ai dit au début et tu as répondu que ça marchait pas

Sinon pour générer du xls il faut regarder du côté des objets COM il y a des tutos là-dessus sur le forum mais c'est évident plus lourd à mettre en oeuvre que des simples CSV.

Bon courage.
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 16h04   #9
Membre à l'essai
 
Inscription : avril 2003
Messages : 62
Détails du profil
Informations forums :
Inscription : avril 2003
Messages : 62
Points : 24
Points : 24
Merci , je vais regarder
mais cela suppose que Excel doit être installé sur le Serveur ??
nbelg27 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2007, 16h12   #10
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
Citation:
Envoyé par nbelg27
Merci , je vais regarder
mais cela suppose que Excel doit être installé sur le Serveur ??
Début de réponse par là...
http://www.developpez.net/forums/sho...d.php?t=258776
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 08h34   #11
Modérateur
 
Avatar de mathieu
 
Inscription : juin 2003
Messages : 4 893
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 4 893
Points : 4 466
Points : 4 466
Citation:
Envoyé par nbelg27
je sai qu'il ne s'en sortiront pas
dans ce cas essaye peut être de trouver une solution qui n'utilise pas Excel
__________________
Modérateur PHP
mathieu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h47.


 
 
 
 
Partenaires

Hébergement Web