Generer une page excel avec php

[Résolu]
Signaler
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009
-
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
-
je suis à la recherche d'un exemple de source qui puisse me permettre
de generer un document exel avec des info qui viendrai de formulaire et
de dbb mysql!!

actuellement je suis en train de retourner internet avec google mais je trouve par grand chose!!!

est ce que quelqu'un aurrai des info sur le sujet?

merci d'avance

cacoucatatonique

17 réponses

Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
J'aime pas trop voir un '/' tout nu dans le nom du fichier... Peut-être devrais-tu le remplacer par un '-' ou l'échaper avec un antislash '\/'.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
hello,

il existe une classe excel pour php. Une librairie. Cherche ça sur google.
Mais en général, on fait simple, on génère des fichiers CSV. Non seulement la structure est simple (champs séparés par des virgules ou point-virgules), mais en plus php fournit en standard des fonctions exprès pour : fgetcsv(), fputcsv().
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

et une fois que ce csv est generer on peut avoir un format xml?

cacoucatatonique
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut,

Le plus simple pour générer un fichier compréhensible par Excel (et tous les autres logiciels de tabloïsation), c'est de créer un fichier au format CSV...

Koiça ?

"exemple";"de";"csv"
"c'est";"très";"simple"
"même";"pour";"le créer..."

<?php
// pour chaque ligne du CSV :
$tab = array(1,2,3,4);
$csv = '"'.implode('";"', $tab).""\r\n";

echo $csv;
// "1";"2";"3";"4"
?>

Voili-voilou
A+
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

heu je me suis trompé je voulais dire le format xsl

cacoucatatonique
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Le csv est géré par Excel. Si c'est ça ton problème. Tu ne verras pas la différence.
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
jette un oeil sur ce lien, je me suis débrouillé avec le script qui se trouve sur la page

www.phpinfo.net/articles/article_sylk.html
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
SYLK !?!

Je ne connaissais pas.
C'est très intéressant et l'article est bien fait...

Merci sidf
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

j'ai trouvé, pour ce qui ca interesse un autre moyen qui fonctionne:

$file = ("commentaires.xls"); // le fichier doit déjà exister


if(!$myfile = fopen($file, "w")) //on ouvre le fichier
{
print("erreur: ");
print("'$filename' n'existe pas!\n");
exit;
}


//ecriture
fputs($myfile,"categorie\t designation\t reference\t marque\t unite de vente\t seuil\t stock\t info\n $temp3\t $prod\t $temp1\t $temp4\t $temp5\t $seuil\t $quant\t $temp6\n "); //la je rentre mes données
//on insère une tabulation \t pour changer de colonne et un retour chariot \n pour changer de ligne



//fermeture fichier
fclose($myfile); //on ferme le fichier
echo "La table a été sauvegardée...";


$date = date("d/m");


//$file_copy = ($date.'commentaires.xls');


//echo"$file_copy";


//$handle = fopen ($file_copy, "w");


//copy($file, $file_copy);
//fclose($handle);


//unlink ($file);


bon il est vrai qu'il faut un fichier de démarage, parcontre j'ai un probleme, la partie de copie du fichie sous un autre nom me fait tous planter et il me supprime le fichier de base, est ce que quelqu'un peut jeter un oeuil sur le code ci dessus pour m'eclairer sur ce bug!!!!!!
merci d'avance

cacoucatatonique
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Salut...

Ok pour le xsl

concernant la copie, pourquoi ouvrir le fichier avant de le créer ?

//$handle = fopen ($file_copy, "w");
copy($file, $file_copy); // c'est tout !
//fclose($handle);

A+
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

j'ai comme tu m'a dit et j'ai obtenue cette reponse, quant pense tu?

Warning: copy(03/02commentaires.xls): failed to open stream: No such file or directory in c:\program files\easyphp1-7\www\chimie\stockdispo\excel.php on line 73

cacoucatatonique
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

voila mon source complet, alors l'ecriture dans le fichie xls fonctionne parfaitement, mais la copie meme avec ce que J_G il m'envoi le message d'erreur ci-dessus
<html>


<head>
<title></title>
</head>




<?php


$connexion = mysql_connect("localhost","root","")
or die ("probleme de connection");
$db = mysql_select_db("chimie",$connexion)
or die ("probleme de selection de base de donnée");


$prod=$_POST['prod'];


$req="SELECT quant,temp1,seuil,temp3,temp4,temp5,temp6 FROM stock WHERE prod='$prod'" ;
$query = mysql_query($req);
$data = mysql_fetch_array($query, MYSQL_ASSOC);



$quant=$data['quant'];
$temp1=$data['temp1'];
$seuil=$data['seuil'];
$temp3=$data['temp3'];
$temp4=$data['temp4'];
$temp5=$data['temp5'];
$temp6=$data['temp6'];


if ($temp3=="Ré")
{$temp3="Réactifs";}
if ($temp3=="Co")
{$temp3="Consommables";}
if ($temp3=="Pi")
{$temp3="Pièces détachées";}


echo "$temp3... $prod... $temp1.... $temp4.... $temp5.... $seuil.... $quant.... $temp6....";


$file = ("commentaires.xls"); // le fichier doit déjà exister


if(!$myfile = fopen($file, "w")) //on ouvre le fichier
{
print("erreur: ");
print("'$filename' n'existe pas!\n");
exit;
}


//ecriture
fputs($myfile,"categorie\t designation\t reference\t marque\t unite de vente\t seuil\t stock\t info\n $temp3\t $prod\t $temp1\t $temp4\t $temp5\t $seuil\t $quant\t $temp6\n ");
//on insère une tabulation \t pour changer de colonne et un retour chariot \n pour changer de ligne


//fermeture fichier
fclose($myfile);
echo "La table a été sauvegardée...";


$date = date("d/m");
$file = ('commentaires.xls');
$file_copy = ($date.'commentaires.xls');


copy($file,$file_copy);


mysql_close();


?>




</html>

cacoucatatonique
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

et bien c'est beete mais ta reson jai viré le / et ca fonctionne au car de tours

cacoucatatonique
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

parcontre est ce que je peux tembeter encore un peut?
c'est pour savoir comment je peux faire pour faire executer mon fichier xls par php , faire comme si je l'avai ouvert avec excel!!!

cacoucatatonique
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Euh.... Aie !

Pourquoi faire comme-ci, ouvre le avec excel. Ca fait trois jours que tu t'acharne à faire une fichier.xsl... Pour ensuite ne pas l'ouvrir avec excel !?!

Je ne comprend pas, désolé.
Messages postés
164
Date d'inscription
vendredi 25 février 2005
Statut
Membre
Dernière intervention
7 octobre 2009

parceque le fichier xls va etre sur un serveur, et moi je voudrai l'ouvrir à distance depuis un reseau intranet

cacoucatatonique
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Statut
Membre
Dernière intervention
28 août 2007
9
Propose le en téléchargement...

La personne choisira "ouvrir" ou "enregistrer".

<?php
// y'a pas plus simple...
$file = 'file.xsl';
header('Content-type: application/excel');
header('Content-Disposition: attachment; filename="'.$file.'"');
readfile($file);
exit;
?>