Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 01/12/2011, 09h46   #1
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Par défaut Générer un fichier excel

Bonjour,
Commenter créer et remplir un fichier .xls ou .cvs à base des données provenant d'une requete SELECT. Tout récemment il y'avait un sujet du genre mais je n'arrive pas à le retrouver.

Merci d'avance...
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h59   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 671
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 671
Points : 5 404
Points : 5 404
Utilise fputcsv. Tu lis tes données via un bête SELECT, tu les places dans un array et tu boucles sur l'array pour écrire les données via fputcsv
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 12h59   #3
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par Celira Voir le message
Utilise fputcsv. Tu lis tes données via un bête SELECT, tu les places dans un array et tu boucles sur l'array pour écrire les données via fputcsv
Oui, merci.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
<?php
 
$list = array (
   array('aaa', 'bbb', 'ccc', 'dddd'),
   array('123', '456', '789'),
   array('"aaa"', '"bbb"')
);
 
$fp = fopen('file.csv', 'w');
 
foreach ($list as $fields) {
    fputcsv($fp, $fields);
}
 
fclose($fp);
?>
file.cvs est créé avec des données. Mais toutes les données de chaque array fait l'objet d'une cellule.
Code :
1
2
3
4
 
aaa,bbb,ccc,dddd // dans la meme cellule
123,456,789 // dans la meme cellule
"aaa","""bbb""" // dans la meme cellule
Pourtant je souhaite la première cellule me fasse 4 plutôt.

Merci pour votre aide.
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 13h19   #4
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonjour,

Excel sépare automatiquement les données d'un fichier .csv dans des colonnes distinctes quand ce dernier est bien formaté. Le séparateur automatiquement reconnu par excel est ; et non ,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
$list = array (
   array('aaa', 'bbb', 'ccc', 'dddd'),
   array('123', '456', '789'),
   array('"aaa"', '"bbb"')
);
 
$fp = fopen('file.csv', 'w');
 
foreach ($list as $fields) {
    fputcsv($fp, implode(';', $fields));
}
 
fclose($fp);
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2011, 16h12   #5
Membre actif
 
Avatar de Lordsephiroth
 
Patrick Mingard
Inscription : mai 2006
Messages : 166
Détails du profil
Informations personnelles :
Nom : Patrick Mingard
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 166
Points : 185
Points : 185
Bonjour,
Personnellement mon application exporte les données au format HTML (sans balise <html>, <head>, <body>) en nommant le fichier d'une extension XLS. Excel (en tout cas la version 2010 qui est installée) interprète parfaitement tout ce qui est dans une table comme une grille de données. D'ailleurs il est même possible d'y mettre du style.

Petit exemple :

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
42
<style type="text/css">
<!--
body {
	background-color: #ECE9D8;
}
.titel {
	font-weight: bold;
	font-size: 22px;
}
.header {
	font-size: 13px;
	font-weight: bold;
	color: #CCCCCC;
	background-color: #A80329;
}
.contentData {
	font-size: 12px;
}
br
	{mso-data-placement:same-cell;}
 
.green {
	background-color: #009900;
}
.red {
	background-color: #FF0000;
}
.yellow {
	background-color: #FFCC00;
}
a {
	text-decoration: none;
}
-->
</style>
 
<table cellpadding="0" cellspacing="0" border="1" bordercolor="#999999">
<tr>
 <td colspan="31" class="titel"><span style="color: #A80329; font-size: 26px;">Report</td>
</tr>
...... <!-- ici vienne de nombreuses autres lignes avec de nombreuses cellules, 31 pour être précis sur le nombre -->
</table>
Extrêmement pratique.
Je n'ai pas testé d'ouvrir ça sur OpenOffice ou LibreOffice. Dans un milieu d'entreprise où les configuration des ordinateurs sont toutes les mêmes, c'est vraiment facile à gérer.

Cordialement,
Patrick
__________________
Always code as if the guy maintaining your application is a violent psychopath!
Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch
Lordsephiroth est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 08h03   #6
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
Envoyé par rawsrc Voir le message
Bonjour,

Excel sépare automatiquement les données d'un fichier .csv dans des colonnes distinctes quand ce dernier est bien formaté. Le séparateur automatiquement reconnu par excel est ; et non ,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
 
$list = array (
   array('aaa', 'bbb', 'ccc', 'dddd'),
   array('123', '456', '789'),
   array('"aaa"', '"bbb"')
);
 
$fp = fopen('file.csv', 'w');
 
foreach ($list as $fields) {
    fputcsv($fp, implode(';', $fields));
}
 
fclose($fp);
?>
J'ai cette erreur :
Citation:
Warning: fputcsv() expects parameter 2 to be array, string given in I:\wamp2\www\xls\index2.php on line 12
okoweb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/12/2011, 08h20   #7
Membre éclairé
 
Homme Gérard Okono
Développeur Web
Inscription : juillet 2006
Messages : 711
Détails du profil
Informations personnelles :
Nom : Homme Gérard Okono
Localisation : Cameroun

Informations professionnelles :
Activité : Développeur Web
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : juillet 2006
Messages : 711
Points : 328
Points : 328
Citation:
int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
$list = array (
   array('aaa', 'bbb', 'ccc', 'dddd'),
   array('123', '456', '789'),
   array('"aaa"', '"bbb"')
);
 
$fp = fopen('file3.csv', 'w');
 
foreach ($list as $fields) {
	fputcsv($fp, $fields, ';');
}
 
fclose($fp);
okoweb 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 19h36.


 
 
 
 
Partenaires

Hébergement Web