Export excel

cs_richardd Messages postés 35 Date d'inscription mercredi 26 mars 2003 Statut Membre Dernière intervention 10 mai 2005 - 3 mars 2005 à 17:34
cs_aladi Messages postés 1 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 août 2005 - 21 août 2005 à 17:27
Bonjour,

J'essaye d'exporter des données vers un fichier excel, mais je n'obtient que des fichiers vides.
Voici mon code, si quelqu'un à la solution.
Merci

<?php
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename='.'Export'.'.xls');
header('Pragma: no-cache');
header('Expires: 0');
echo "Dupont";
echo "\t";
echo "\n";
?>

11 réponses

cs_navya Messages postés 33 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 8 novembre 2007
4 mars 2005 à 08:37
J'ai le meme problème alors merci d'avoir posé la question!!

Navya
0
cs_navya Messages postés 33 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 8 novembre 2007
4 mars 2005 à 08:52
Salut,
J'ai trouvé un truc sur un forum mais c'est pour MySQL:

<?
/*
/**********************************************/
/************ Scripted by oVa13 ******************/
/**********************************************/
< BR>Ce script sert à générer un fichier WORD ou EXCEL à partir de requetes faîtes sur Mysql.
Par défault, le script créé un fichier WORD.
Pour créer un fichier EXCEL il faut changer "msword" en "msexcel"
et "doc" en "xls" dans les variables $type_fichier et $extension juste en dessous !!
*/

//-- --on définit le type de fichier
$type_fichier = "msword";
//----on définit l'extension
$extension = "doc";

//---- headers
//----type fichier
header("content-type:application/$type_fichier");

//----type extension (doc ou xls)
header("content-disposition: .doc; filename=liste_personnel.$extension");

//----date + titre
$now_date = date('d-m-Y H:i');
$titre = "Liste du personnel éditée le $now_date";

//---- libéllé requete SQL
$requete = "Select * from tabletest";

//---- récup des variables de connection
!include!("../config.inc");

//---- connection à la base
mysql_connect($serveur,$login,$pass) or die("Impossible de se connecter à la base de données");
mysql_select_db("$base") or die("Impossible de se connecter à la base de données");

//---- exécution requete SQL
$result = @mysql_query($requete) or die(mysql_error());

//---- separateur
$sep = "\n";

//---- affichage titre
echo("$titre\n\n\n");

/************************************* ****************/
/* Edition des colonnes (pour EXCEL)
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");
*/
/************************************** ***************/

//---boucle d'enregistrement des données dans la variable $texte
$i = 0;
while($row = mysql_fetch_row($result))
{
$texte = "";
for($j=0; $j<MYSQL_NUM_FIELDS($RESULT);$J++)
{
//----noms des champs
//************ ATTENTION : il faut mettre la ligne ci-dessous en commentaires si vous voulez créer un fichier EXCEL ***********
$texte .= mysql_field_name($result,$j) . " : ";

//----contenu
if(!isset($row[$j]))
$texte .= "NULL".$sep;
elseif ($row[$j] != "")
$texte .= "$row[$j]".$sep;
else
$texte .= "".$sep;
}

//----on enlève le "$"
$texte = str_replace($sep."$", "", $texte);
$texte .= "\t";
print(trim($texte));
print "\n\n";
$i++;
}

//----validation que le fichier a bien été rempli
return (true);

?>

Voila
Navya
0
cs_navya Messages postés 33 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 8 novembre 2007
4 mars 2005 à 11:58
Le script que je viens de te donner est bidon, essai plutot ça mais cette fois c'est un ODBC mais si tu remplace odbc_ par mysql_ cela devrait fonctionner

/******************Voila**************/
//à mettre tout en haut de la page php et ne mettre que du php
header(
"Content-Type: application/csv-tab-delimited-table");

header("Content-disposition: filename= table.csv");

/**connexion base de données*/

include (
"fonctions/connex.php");

$connx =cnx_intranet();

$req=
"select * from resultats";

$res=@odbc_exec(
$connx,
$req);

$fp = fopen(
"./dump.sql",
"a");
while (@odbc_fetch_row(
$res)) {

$tmp =@odbc_result(
$res,
"champs");
$tmp2= @odbc_result(
$res,
"champs2");
fwrite(
$fp,
"insert into table ".

"values (' $tmp
', '$tmp2
\n");
}
fclose(
$fp);

$arr = file(
"./dump.sql");



for($i=
0;
$i<sizeof(
$arr);
$i++) {
@odbc_exec(connx,
$arr[
$i]);
}

$csv_output =
"Nom Colonne1,Nom colonne2";

$csv_output .=
"\n";

$res=@odbc_exec(
$connx,
$req);
while (@odbc_fetch_row(
$res)) {

$csv_output . =
"$tmp
,$tmp2
\n";
}
print
$csv_output;
exit;
@odbc_close(
$connx);

Voila mais biensur avec une connexion odbc
Navya
0
richarddum Messages postés 54 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 20 décembre 2005
4 mars 2005 à 12:40
Salut,

Je viens de faire un essai, mais j'obtiens toujours un fichier vide.

J'ai remplacé le début par le tien
header("Content-Type: application/csv-tab-delimited-table"
);

header("Content-disposition: filename=table.csv");

Est-ce ça marche avec toi ?

Richard
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_navya Messages postés 33 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 8 novembre 2007
4 mars 2005 à 13:40
Oui, ça marche pour moi mais est-ce que tu utilise MySQL ou une connexion ODBC,
Si c'est mySQL voici une autre version à peut etre modifier!!
<?
// Create data file from a 2 column table

$result = mysql_query("select * from table");
$fp = fopen("./dump.sql", "a");

while($row = mysql_fetch_array($result)) {
fwrite($fp, "insert into table ".
"values ('$row[col1]', '$row[col2]')\n");
}

fclose($fp);
?>

<?
// Reading the data back in

$arr = file("./dump.sql");

for($i=0; $i<sizeof($arr); $i++) {
mysql_query($arr[$i]);
// execute each line as SQL statement
}
$csv_output = "column 1,column2"; //entête de colonne
$csv_output .= "\n";
$result = mysql_query("select * from table");

while($row = mysql_fetch_array($result)) {
$csv_output .= "$row[col1],$row[col2]\n";
}

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".xls");
print $csv_output;
exit;
?>

Navya
0
richarddum Messages postés 54 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 20 décembre 2005
4 mars 2005 à 14:47
Je ne fais même pas l'essai avec une base, j'envoie simplement

echo "Dupont";
echo "\t";
echo "\n";

Je vais approfondir, merci.

Richard
0
cs_navya Messages postés 33 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 8 novembre 2007
4 mars 2005 à 14:53
Bon voila tout ce que j'ai dans ma page PHP avec que du php!!!!!!!!!! et une connexion ODBC
Cette page est appelée grace à un formulaire html avec ceci:


<form method=
"POST" action=
"excel.php">
>
</form>


puis voici tout le code de excel.php
<?php
session_start();

header("Content-Type: application/csv-tab-delimited-table");

header("Content-disposition: filename=table.csv");
//permet d'arrondir les réels de ma base de données met facultatif pour toi

function arrondi($r){

$r =round(
$r,
3);

return($r);

}


/***********************CONNEXION BASE DE DONNEES*******************************/
include
("fonctions/connex.php");

$connx= cnx_intranet();
//requete pour avoir les champs de ta base de données

$req=
"select chp1,chp2 from resultats";
//exécution de la requete

[mailto:$res=@odbc_exec($connx,$req); //ici tu donne les titres de tes colonnes avec la virgule qui sépare chaque colonne$csv_output $res=@odbc_exec(
$connx,
$req);
//ici tu donne les titres de tes colonnes avec la virgule qui sépare chaque colonne
$csv_output] =
"titre colonne 1,titre colonne 2";

$csv_output .=
"\n"; //permet d'aller à la ligne
//tantque tu a des résultats à partir de la requete, tu les récupères dans $chp1 et $chp2 puis tu
//les imprimes dans ton fichier csv

while (@odbc_fetch_row($res)) {

$chp1 =@odbc_result(
$res,
"chp1");

$chp2=@odbc_result(
$res,
"chp2");

$csv_output .=
"$chp1
,$chp2
\n";//ici tu mets tes résultats dans ton fichier csv et \n permet de
//passer à la ligne à chaque résultat

}
print $csv_output;//fin du fichier

exit;
@odbc_close($connx);


?>




Navya
0
cs_navya Messages postés 33 Date d'inscription mardi 1 mars 2005 Statut Membre Dernière intervention 8 novembre 2007
4 mars 2005 à 14:58
Si tu n'envoi pas avec une base essai ça!! Mais que du PHP!!!!


<?php
session_start();
header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");
$csv_output = "titre colonne 1,titre colonne 2";
$csv_output .= "\n";
$csv_output .= "Dupont, Toto\n";
print $csv_output;
exit;
?>

Navya
0
richarddum Messages postés 54 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 20 décembre 2005
4 mars 2005 à 15:05
C'est ce que j'étais en train d'essayer
0
richarddum Messages postés 54 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 20 décembre 2005
4 mars 2005 à 15:13
J'ai trouvé, il me restait un reliquat de balise html après la balise de fin du script php.

Merci énormément de ton aide et de ta patience.
A charge de revanche.

Richard
0
cs_aladi Messages postés 1 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 21 août 2005
21 août 2005 à 17:27
Salut,

Les sauts de colonne c'est ; et non ,

Ce qui donne

<?php
session_start();
header("Content-Type: application/csv-tab-delimited-table");
header("Content-disposition: filename=table.csv");
$csv_output = "titre colonne 1;titre colonne 2";
$csv_output .= "\n";
$csv_output .= "Dupont; Toto\n";
print $csv_output;
exit;
?>
0
Rejoignez-nous