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...
Version imprimable
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...
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.
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
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); ?>
Pourtant je souhaite la première cellule me fasse 4 plutôt.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
Merci pour votre aide.
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); ?>
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 :
Extrêmement pratique.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>
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
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);