Export vers Excel, PHP, zéro à gauche

Mooglie77

XLDnaute Nouveau
Bonjour à toutes et tous,

Je suis à court d'idée pour trouver une solution à mon problème donc je me dirige vers les experts!

La situation et mes contraintes actuelles sont les suivantes: (à considérer comme obligatoire)
Exporter des données depuis une base de données MySQL en PHP vers un format .xls
Mes données sont stockées en base au format VARCHAR (chaîne de texte).
Une de ces colonnes (colonne A), pourtant de type texte, contient une suite de chiffre pouvant commencer par des 0 que je dois absolument conserver. (Exple: 00112)

Le fichier utilisé ci-dessous, export.xls doit être existant sur le serveur.

Voici le script que j'ai utilisé:

$file = "export.xls";
if(!$myfile = fopen($file, "W")){
echo "Erreur";
exit;
}

fwrite($myfile,"Colonne A\tColonne B");

while($ligne = mysql_fetch_object($liste_individu)){
fwrite($myfile,"$ligne->valeurA\t$ligne->valeurB");
}

fclose($myfile);

echo "<meta http-equiv='refresh' content='0;url=export.xls'/>";

Problème rencontré...
Lors de l'export vers Excel, les données de la colonne A sont faussées puisque je perd mes "0 à gauche".
Une chaîne en base du genre "00112" est affichée sous Excel en "112"...


Solutions déjà testées et n'ayant pas fonctionné:
  1. Modifier le xls en csv...
  2. Modifier les \t par des ;
  3. Un mix des points 1 et 2
  4. Mettre une ' devant $ligne->valeurA pour forcer le type texte (Résultat obtenu sous Excel... --> '00112 :( )

Voilà... je crois que j'ai tout dis...
Merci d'avance à tout ceux et celles qui chercheront à m'aider! :D

++
 

JYLL

Nous a quitté
Repose en paix
Re : Export vers Excel, PHP, zéro à gauche

Bonsoir Mooglie et le Forum,

Une solution consiste peut être mettre un format dans la colonne qui reçoit ette valeur:

Cliquer sur "Format" 3cellules", "Nombre" enlever le décimales et mettre le format :

Code:
0000#

112 donnera 00112

Bon test.
 

Mooglie77

XLDnaute Nouveau
Re : Export vers Excel, PHP, zéro à gauche

Bon bah voilà j'avais pas tout dis!!! :) je l'savais... je l'savais !
Déjà, merci de ta réponse.

Alors en fait le 5ème point de test que j'ai effectué ressemble à quelques détails près à ton idée !

Vue que le fichier .xls existe déjà sur le serveur... j'me suis dis. "Met donc un format de cellule genre Texte et test !"

Sauf qu'à l'enregistrement, Excel me sort une sorte de Warning concernant l'enregistrement du genre, des options risquent d'être perdues... ou essayer d'enregistrer une copie de votre document avec une version d'Excel plus récente...
Résultat: quand je réouvre le fichier... mon format de texte... et si par bonheur le fichier s'enregistre comme je le souhaite ... Une fois que l'export est réalisé... le format disparaît...

Conclusion, une autre caillou dans l'eau. :(

N'y aurait-t-il pas une option à l'ouverture d'un fichier xls passé en URL vis un browser comme ce que je fais pour forcer un type... ou je sais pas ...!?
Qui à quelques autres pierres à lancer dans la marre ???:confused:
 
Dernière édition:

Catrice

XLDnaute Barbatruc
Re : Export vers Excel, PHP, zéro à gauche

Bonsoir,

Si j'ai bien suivi/compris toutes les étapes, je crois qu'il faut forcer l'enregistrement au format Excel (etape 5).
S'il te met tous ces warning c'est qu'il essaye d'enregistrer au format texte => perte des formats.
En enregistrant au format Excel les formats Texte ou 0000# seront conservés.
 

Mooglie77

XLDnaute Nouveau
Re : Export vers Excel, PHP, zéro à gauche

Salut!

Ouais ... voilà c'est ça !
j'ai effectivement forcé le format .xls puisqu'il me proposait .txt(tabulations texte) j'crois...

Bon ben ... au moment où je génère le fichier dynamiquement ... ce formatage est perdu...

Si tu veux, j'ai l'impression que le fclose de mon .xls enregistre en quelque sorte comme un .txt(tabulation + texte)...

y'a t'il à la limite un autre caractère que le \t pour sauter d'une cellule...!?
Ca s'trouve c'est lui qui force cette fermeture de fichier en .txt(truc machin)...
 
Dernière édition:

Bernard-Louis

XLDnaute Occasionnel
Re : Export vers Excel, PHP, zéro à gauche

Bonjour a toutes et tous.
J'avais ce propbleme que j'ai regle de cette maniere.

Supprimer les espaces sur toute la colonne par : CTRL + H, puis ALT + 032 où ALT + 0160
Insérer une colonne, puis rentrer la formule TEXTE : pour convertir les codes :
Valeur = N° cellule ;
Format texte = ‘’000000’’



Pour le VBA, tu enregistres manuellement la macro, et il y a juste a l'adapter.
Bonne journée.
Cordialement
 

Mooglie77

XLDnaute Nouveau
Re : Export vers Excel, PHP, zéro à gauche

Euh ... j'ai bien peur que cette réponse ne soit pas adaptée à mon souci...
J'ai pas moyen de faire des Ctrl+H, Alt+machin... et surtout ... je suis pas en VBA...

d'où le titre du topic en fait ... "PHP"... mais c'est gentil qd même! :eek:
 

Discussions similaires