php excel - Programmation
Marsh Posté le 16-07-2001 à 17:16:17
Rappel, PHP tourne sur le serveur !
Excel tourne sur le client !
C'est donc pas un PB PHP, voir plutot coté javascript pour ouvrir EXCEL.
Pour générer quelquechose de compréhensible par excel, génère un document HTML contenant un tableau HTML. Si cet pas trop compliqué, çà devrait passer pas trop mal
Marsh Posté le 16-07-2001 à 17:25:30
tulouvreavacexcel
Marsh Posté le 16-07-2001 à 17:27:59
j'ai creer un tableau html masi avec du php il ya une possibilité de faire quelque chose?
Marsh Posté le 16-07-2001 à 17:39:42
EXEMPLE :
Code :
|
Si tu clique sur le lien Toto.xls, dans IE, il téléchage le fichier et l'ouvre dans une fenêtre EXCEL ! ! !
Marsh Posté le 19-07-2001 à 12:32:55
le \t représente la tabulation, et il me semble que le \n et le retour chariot. je crois qu'il se code de plusieurs façon( \n, \r\n, \r)...
A qqchose près çà doit être çà...
Marsh Posté le 19-07-2001 à 14:17:15
séquence valeur
\n Nouvelle ligne (linefeed, LF ou 0x0A en ASCII)
\r Retour à la ligne(carriage return, CR ou 0x0D en ASCII)
\t Tabulation horizontale (HT ou 0x09 en ASCII)
\\ Antislash
\$ Caractère $
\" Guillemet double
\[0-7]{1,3} Une séquence de caractère qui permet de rechercher un nombre en notation octale.
\x[0-9A-Fa-f]{1,2} Une séquence de caractère qui permet de rechercher un nombre en notation hexadécimale.
VOLA SKE CA FEZ !
Non, mais franchement, vous trouvez pas que c'est chiant à lire cette façon d'écrire !
Z'avez pu 8 ans !
Faites un peu gaffe quand même ! Ayez un peu de respect pour ceux qui vous lisent, surtout si c'est pour vous aider !
ONNESTPASSURBLABLA!
Marsh Posté le 20-07-2001 à 10:07:30
un petit probleme cela doit etre un pb de variable
/***************************/
//Entete du tableau
$buff = ("<TABLE>\n" );
$buff .= ("\t<TR>\n" );
foreach ($champs as $ele)
{
$buff .= ("\t\t<TD>$tabcor[0][$ele]</TD>\n" );
}
$buff .= ("\t</TR>\n" );
/***************************/
//Corps du tableau
$i=0;
while ($i < $nbligne)
{
$buff .= ("\t<TR>\n" );
$j=0;
while ($j < $nbcol)
{
$buff .= ("\t\t<TD>$monTableau[$i][$j]</TD>\n" );
$j++;
}
$buff .= ("\t</TR>\n" );
$i++;
}
$buff .= ("</TABLE>\n" );
//Enregistrement du tableau
$f = fopen("toto.xls", "wb" );
if( fwrite( $f, $buff, strlen($buff)))
{
fclose( $f );
echo( "<a href=\"toto.xls\">Toto.xls</a>" );
}
else
echo "Problème d'écriture de fichier !";
?>
Marsh Posté le 20-07-2001 à 17:03:02
Ben c'est quoi le problème ?
Y'a un message d'erreur ?
Y se passe quoi ?
Met des echo() de temp en temp pour debugger...
Marsh Posté le 20-07-2001 à 17:08:44
bne j'arrive avec un tableau où il array[]
avec l'indice dans le tableau qui est bon
Marsh Posté le 20-07-2001 à 17:10:10
bob2674 a écrit a écrit : bne j'arrive avec un tableau où il array[] avec l'indice dans le tableau qui est bon |
Y'a un traducteur pour çà dans la salle ?
Marsh Posté le 20-07-2001 à 17:11:19
cela me donne cela
Array[KNGC01.GCPHLFAC.GNUFAC]
Array[0]
Array[0]
Array[0]
Array[0]
Marsh Posté le 20-07-2001 à 17:19:15
Alors, çà veux dire que t'as une dimension en plus dans tes tableaux $tabcor et $monTableau
Si tu remplace par :
$tabcor[0][$ele]["KNGC01.GCPHLFAC.GNUFAC"]
et
$monTableau[$i][$j][0]
Ca fait quoi ?
Marsh Posté le 20-07-2001 à 17:32:06
dans cette page j'ai tt ce code et le tableau marche dans la première partie mais pas pour excel pourkoi?
/******************************************************************/
/* affichage du tableau */
/******************************************************************/
echo "<TABLE BORDER=$border cellspacing=$cellspacing align=$align>";
$champs= explode (",",$champs);
/***************************/
//Entete du tableau
echo "<TR bgcolor=$coul_tab_ent>";
foreach ($champs as $ele)
{
echo "<TD><font color=$coul_font_1>";
print ($tabcor[0][$ele]);
echo"</font></TD>";
}
echo "</TR>";
/***************************/
//Corps du tableau
$i=0;
while ($i < $nbligne)
{
if ($i%2)
echo "<TR BGCOLOR=$coul_tab_1>";
else
echo "<TR bgcolor=$coul_tab_2>";
$j=0;
while ($j < $nbcol)
{
if ($j%2)
echo "<TD><FONT COLOR=$coul_font_1>";
else
echo "<TD><FONT COLOR=$coul_font_2>";
echo $monTableau[$i][$j];
echo "</FONT></TD>";
$j++;
}
echo "</TR>";
$i++;
}
// FIN DU TABLEAU
//echo "</table></body>";
echo "</table>";
?>
<?
/******************************************************************/
/* enregistrement du tableau au format excel */
/*************************************************
*****************/
/***************************/
//Entete du tableau
$buff = ("<TABLE>\n" );
$buff .= ("\t<TR>\n" );
foreach ($champs as $ele)
{
$buff .= ("\t\t<TD>$tabcor[0][$ele]</TD>\n" );
}
$buff .= ("\t</TR>\n" );
/***************************/
//Corps du tableau
$i=0;
while ($i < $nbligne)
{
$buff .= ("\t<TR>\n" );
$j=0;
while ($j < $nbcol)
{
$buff .= ("\t\t<TD>$monTableau[$i][$j]</TD>\n" );
$j++;
}
$buff .= ("\t</TR>\n" );
$i++;
}
$buff .= ("</TABLE>\n" );
//Enregistrement du tableau
$f = fopen("toto.xls", "wb" );
if( fwrite( $f, $buff, strlen($buff)))
{
fclose( $f );
echo( "<a href=\"toto.xls\">Toto.xls</a>" );
}
else
echo "Problème d'écriture de fichier !";
?>
<?
echo "<FORM action='excel.php' method='post'>";
// affiche le bouton ok
echo "<BR>
<INPUT type=SUBMIT VALUE='OK'> ";
echo "</FORM></body>";
?>
Marsh Posté le 20-07-2001 à 17:40:30
Je viens de comprendre en faisant des essais !
si $a=array( "a", "b", array( "c, "d" ) );
Alors j'ai :
$a[0] = "a"
$a[1] = "b"
$a[2][0] = "c"
$a[2][1] = "d"
Ok jusque là !
Si je fais
$i=0;
echo( "<TD>$a[$i]</TD>" );
il fait bien : <TD>a</TD>
mais si je fais
$i=2;
echo( "<TD>$a[0][$i]</TD>" );
ALORS, il fait : <TD>Array[2]</TD> ! ! !
Conclusion :
Ecrit : $buff .= ("\t\t<TD>" . $monTableau[$i][$j] . "</TD>\n" );
et : $buff .= ("\t\t<TD>" . $monTableau[$i][$j] . "</TD>\n" );
Tordu le truc !
Un bug dans PHP ? ? ?
Marsh Posté le 20-07-2001 à 17:44:21
Explication complémentaire :
$i=2;
echo( "<TD>$a[0][$i]</TD>" );
ALORS, il fait : <TD>Array[2]</TD> ! ! !
C'est à dire "<TD>" puis valeur de $a[0] qui est bien "Array" ($a[0] est un tableau), puis plus loin "[" puis la valeur de $i, soit "2" et enfin "]</TD>" ce qui fait bien <TD>Array[2]</TD>
Marsh Posté le 20-07-2001 à 17:55:34
en effet très bizarre merci pour ton explication
par contre normalement cela ne devrait pas ouvrir excel?
et j'ai un problème si je rappelle cette page avec un autre tableau il l'affiche que l'ancien
Marsh Posté le 20-07-2001 à 18:22:05
Ben moi, il ouvre pas vraiement Excel, il ouvre une "feuille" excel dans la fenêtre d'IE.
IE 5.0
NT 4.0
EXCEL 2000
Pour l'ancien tableau, c'est un pb de cache.
J'ai essayé tous les headers possible, et autres META TAGS, IE veux rien savoir !
Donc, dans IE, j'ai mis comme option "A chaque visite de la page" !
Mais c'est pas une solution !
Marsh Posté le 20-07-2001 à 21:52:06
il n'y a pas un moyen poyur ouvrir excel alors?
et il faut que je mette pour chaque client à chque visite de page?
Marsh Posté le 16-07-2001 à 17:06:58
Comment peut-on faire pour passer d'un tableau ss php en une table excel
enfin que l'on puisse lire facilement sous excel
et est-il possible de lancer depuis php excel et qu'il ouvre ce tableau pour l'utiliser sous excel