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 20/12/2010, 11h25   #1
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Par défaut Export fichier csv

Bonjour à tous !

Je vous expose mon probléme.
Je veux exporter des données retournées par une requête, sous la forme d'un fichier csv.

Voici un exemple:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
$list = array (
   array("aaa;","bbb;","ccc;","d8dd;"),
   array("123;", "456;", "789;"),
   array("aaa;", "bbb;")
);
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
fclose($fp);
Le souci est que lorsque j'ouvre mon fichier avec excel des virgules trainent et je n'arrive pas à accéder au format des cellules.

Ci-joint vous trouvez le resultat sur le fichier excel.

Merci d'avance.
Images attachées
Type de fichier : png img.PNG (2,3 Ko, 5 affichages)
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h30   #2
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
bonjour,

si le but est d'effacer les virgules en début de champs tu peux faire ceci :

Code php :
1
2
 
   fputcsv($fp, ltrim($fields, ','));
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h44   #3
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Merci d'avoir répondu aussi vite !!

J'ai toujours le même problème les virgules persistent

Voila le code avec la fonction ltrim()
Code :
1
2
3
4
5
6
7
8
9
10
 
 
[..........]
 
$fp = fopen('file.csv', 'w');
foreach ($list as $fields) {
	fputcsv($fp, ltrim($fields, ','));
    fputcsv($fp, $fields);
}
[........]
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h52   #4
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
faut pas réecrire 2 fois la même instruction

Code php :
1
2
3
4
 
foreach ($list as $fields) {
	fputcsv($fp, ltrim($fields, ','));
}
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 11h55   #5
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Mon fichier est vide !
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h04   #6
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Cela viendrai peut-être de mon array() ?
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h04   #7
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324
je connaissais pas fputcsv et apparemment c'est un tableau donc autant le traiter en amont.

Code php :
1
2
3
4
5
6
7
8
9
10
11
12
 
$sortie = array();
 
foreach($list as $cle=>$tab){
	$sortie[$cle] = array();
	foreach($tab as $valeur)
		$sortie[$cle][] = ltrim($valeur, ',');			
}
 
foreach ($sortie as $fields) {
	fputcsv($fp, $fields);
}
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h18   #8
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Toujours le même problème!

Voici mon code modifier mais les virgules sont toujours là :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
$sortie = 
array (
   array('aaa;','bbb;','ccc;','d8dd;'),
   array('123;', '456;', '789;'),
   array('aaa;', 'bb;'));
$fp = fopen('file.csv', 'w');
foreach($list as $cle=>$tab)
{
	$sortie[$cle] = $sortie;
	foreach($tab as $valeur)
		array_push($sortie[$cle], ltrim($valeur, ','));		
}
foreach ($sortie as $fields) {
	fputcsv($fp, $fields);
}
kamnouz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 12h33   #9
Membre Expert
 
Avatar de Madfrix
 
Inscription : juin 2007
Messages : 2 278
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : juin 2007
Messages : 2 278
Points : 2 324
Points : 2 324


je vois pas de virgules dans ton tableau d'entrée

es tu sur de bien analyser l'origine du problème ?
Madfrix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2010, 14h14   #10
Futur Membre du Club
 
Homme
Développeur Web
Inscription : novembre 2007
Messages : 185
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : novembre 2007
Messages : 185
Points : 15
Points : 15
Sayé j'ai trouvé !!

j'ai rajouté le separateur (point virgule) non pas dans mon tableau mais dans la fonction fputcsv() .

Voici le bon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$sortie = 
array (
   array('aaa','bbb','ccc','d8dd'),
   array('123', '456', '789'),
   array('aaa', 'bb'));
$fp = @fopen('file.csv', 'w');
 
foreach ($sortie as $fields) {
	$sortie = str_replace(",", "",$sortie);
	fputcsv($fp, $fields,";");
}
Merci encore de ton aide !!
kamnouz 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 09h23.


 
 
 
 
Partenaires

Hébergement Web