Page générée en PHP vers Excell

Eléphant du PHP | 52 Messages

05 juil. 2006, 08:30

Bonjour,

J'ai créé un annuaire centralisé de mon organisation autour de trois tables :
- organisations
- personnalités
- relation organisations / personnalités

J'aimerai créer un fichier CSV pour préparer un publipostage vers les personnalités via Word / Excel.

Ainsi, je requête la table Personnalités
Je requete ensuite la table relation pour voir à quelle organisation ils appartiennent et le plus haut titre qu'ils occupent (ce sont des élus locaux, donc plusieurs mandats, je sélectionne le plus haut)
Je requete la table organisation pour obtenir leur adresse correspondante...


Reste à créer le CSV.

Comment faire ?

Merci !

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juil. 2006, 09:34

:google: : php générer csv

Ca à l'air un peu compliqué comme ça au début les moteurs de recherche, mais on fini vite par s'y habituer et même trouver des choses quand on se donne la peine de les chercher ;)

Eléphant du PHP | 52 Messages

05 juil. 2006, 09:43

Si je pose une question c'est que justement je n'ai pas trouvé de réponse pertinente !
A chaque fois que Excel ouvre un document CSV créé, il ne classe pas par colonnes... Il reconnait bien les lignes mais c'est tout !

OpenOffice permet d'importer de manière plus controlée, mais on n'utilise pas ce logiciel par défaut ici.

La questions se repose ainsi :

Comment générer un fichier CSV "Excel 2000" ou "Excel XP" qui soit formaté de manière à ce que les données importées soient bien classées dans les colonnes...

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

05 juil. 2006, 09:59

Dans ce cas, c'est que le format de ton fichier n'est pas celui d'un fichier csv classique...

Par défaut les lignes sont déterminées par les "\n" et les colonnes par les ";".
Si ton champ contient un point-virgule ou des retours à la ligne, il faut le placer entre guillemets, et doubler les guillemets éventuelles qu'il contient :

Code : Tout sélectionner

champ1;champ2;champ;champ4; ... \n champ1;champ2;"cha;mp3";"mon ""champ"" 4"; ... \n champ1;champ2;"champ 3";champ4; ... \n ...
Si tu utilises un autre séparateur, il te faut depuis excel utiliser la fonction d'import des données en précisant le séparateur utilisé.

Petit nouveau ! | 8 Messages

05 juil. 2006, 10:25

Je te donne un extrait de code permettant d'enregister des données au format csv.

A toi de l'adapter
// enregistrement du fichier donnees
if($fp = fopen("Donnees.csv","a"))

{

// Données à enregistrer
fputs($fp, "\n"); // on va a la ligne  
fputs($fp, "$Nom;$Adresse;$ville;$CP;$Telephone"); 
fclose($fp);

}
[/php]

Petit nouveau ! | 8 Messages

05 juil. 2006, 10:30

pour convertir les colonnes d'un fichier csv sous excel

Tu selectionnes la colonne A
Tu vas sur Données -> Convertir
Tu choisis Délimité puis suivant
Separateur ; puis Terminer

là il refait les colonnes en se basant sur les ;

Eléphant du PHP | 332 Messages

05 juil. 2006, 12:46

Attention, il y a deux méthodes d'ouverture de documents dans Excel et qui ne fonctionnent pas pareil, surtout avec les CSV.

Si tu double-cliques sur un document CSV, cela ne marche pas
Si tu ouvres Excel et que tu fasses fichier/ouvrir, c'est nickel.

Cela dit, pour générer les fichiers Excel, jette un coup d'oeil là-dessus, cela génère un presque-vrai fichier Excel : http://www.phpfrance.com/forums/viewtop ... ht=#131254

avec juste la limitation que si tu veux faire du publipostage, tu dois faire fichier enregistrer sous ... Format Excel.