Exporter un tableau html en Excel

Signaler
Messages postés
3
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
28 octobre 2008
-
Messages postés
3
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
28 octobre 2008
-
Salut tout le monde!

j'ai un problème pour exposrter un tableau html (creé par PHP) en Excel!
Avec un script PHP contenant un <form> pour parcourir et séléctioner le fichier à lire. En cliquant sur le boutton le fichier est lu et filtrer comme je veux.
Dans ce resultat il y a un 2ème boutton pour l'éxporter. En cliquant ce 2ème boutton une fenêtre apparait (comme je veux) pour télécharger/sauvegarder ce fichier d'excel, auf que cet Excel est vide:
j'éspère que vous pourriez m'aider!

voici mon code:

1. main page:
<form enctype="multipart/form-data" action="action_browse.php" method="POST">

Choose a file to upload:

</form>

2. action_browse.php:
<?
if ($_FILES[meinedatei] !="")
{
    @copy($_FILES[meinedatei][tmp_name], "./".$_FILES[meinedatei][name]) or die("Couldn't copy the file.");
}
else
{
    die(mysql_error());
}
$temp_datei = $_FILES[meinedatei][tmp_name];
$dateiname = $_FILES[meinedatei][name];
echo "temporerer Name mit Pfad: "; print ($temp_datei); echo "
";
echo "Dateiname: "; print ($dateiname); echo "
";
$path = $_FILES[meinedatei][tmp_name];
$open = fopen($path,"r+");
echo "<form name='exporter' action='export.php' method='post'>
    ";
echo "            ----
,
            ACL Name,
            Rule,
            Protocol,
            Source IP / Netmask,
            Destination IP / Netmask,
            Service, \";
        while(!feof($open))
        {
            $zeile = fgets($open,255);
            $hostname = \"/hostname/iU\";
            $remark = \"/remark/iU\";
            $extended = \"/extended/iU\";
            $permit = \"/permit/iU\";
            $deny = \"/deny/iU\";
            if (preg_match_all($remark,$zeile,$matches,PREG_SET_ORDER))
            {
                $wort = preg_split(\"/ /\", $zeile, -1, PREG_SPLIT_NO_EMPTY);
                echo \"----
$wort[2] $wort[3] $wort[4] $wort[5] $wort[6] $wort[7] $wort[8] $wort[9] $wort[10], \";
            }
            //ASA
            elseif     (preg_match_all($extended,$zeile,$matches,PREG_SET_ORDER))
            {
                $i++;
                $wort = preg_split(\"/ /\", $zeile, -1, PREG_SPLIT_NO_EMPTY);
                if (\"$wort[5]\" == \"$wort[6]\")
                echo \"----
$i,
                    $wort[1],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[5],
                    $wort[6],
                    $wort[6],
                    $wort[7],
                    $wort[8] $wort[9], \";
                elseif (\"$wort[5]\" == \"any\")
                echo \"----
$i,
                    $wort[1],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[8],
                    $wort[9] $wort[10], \";
                elseif (\"$wort[7]\" == \"any\")
                echo \"----
$i,
                    $wort[1],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[7],
                    $wort[8],
                    $wort[9] $wort[10], \";
                else
                echo \"----
$i,
                    $wort[1],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[8],
                    $wort[9],
                    $wort[10] $wort[11]";
            }
            //PIX
            elseif     (preg_match_all($permit,$zeile,$matches,PREG_SET_ORDER))
            {
                $i++;
                $wort = preg_split("/ /", $zeile, -1, PREG_SPLIT_NO_EMPTY);
                if ("$wort[4]" == "$wort[5]")
                echo "----, $i</td>
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[4],
                    $wort[5],
                    $wort[5],
                    $wort[6],
                    $wort[7] $wort[8], \";
                elseif (\"$wort[4]\" == \"any\")
                echo \"----
$i,
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[8] $wort[9], \";
                elseif (\"$wort[6]\" == \"any\")
                echo \"----
$i,
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[6],
                    $wort[7],
                    $wort[8] $wort[9], \";
                else
                echo \"----
$i,
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[8],
                    $wort[9] $wort[10]";
            }
            elseif     (preg_match_all($deny,$zeile,$matches,PREG_SET_ORDER))
            {
                $i++;
                $wort = preg_split("/ /", $zeile, -1, PREG_SPLIT_NO_EMPTY);
                if ("$wort[4]" == "$wort[5]")
                echo "----, $i</td>
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[4],
                    $wort[5],
                    $wort[5],
                    $wort[6],
                    $wort[7] $wort[8], \";
                elseif (\"$wort[4]\" == \"any\")
                echo \"----
$i,
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[8] $wort[9], \";
                elseif (\"$wort[6]\" == \"any\")
                echo \"----
$i,
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[6],
                    $wort[7],
                    $wort[8] $wort[9], \";
                else
                echo \"----
$i,
                    $wort[1],
                    $wort[2],
                    $wort[3],
                    $wort[4],
                    $wort[5],
                    $wort[6],
                    $wort[7],
                    $wort[8],
                    $wort[9] $wort[10]";
            }
        }
        echo "
";
        fclose ($open);
        echo "

        </form>";
?>

et dérnièrement voici l'export.php:
<?php
header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=Export_ACL.xls");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>

<?php
include ("action_browse.php");
?>

</html>

3 réponses

Messages postés
1115
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
6 mai 2021
4
salut,

J'ai repris un code existant. En fait, ce que lit une base MySQL (dans ton cas on dira que tu scrute ton tableau) et stocke les données dans un fichier temporaire au format CSV (données séparée par des ; ).

Voici le chargement du fichier par excel :
        header("Content-disposition: inline; filename=$file");
        header("Content-Type: application/force-download");
        //header("Content-Type: application/ms-excel");
        header("Content-Transfer-Encoding: application/octet-stream\n"); // Surtout ne pas enlever le \n
        header("Content-Length: ".filesize("./temp/" . $file));
        header("Pragma: no-cache");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
        header("Expires: 0");
        readfile("./temp/" . $file);

J'espère que ca t'aidera.
Messages postés
3
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
28 octobre 2008

merci [../auteur/FREGOLO52/656668.aspx fregolo52] pour la réponse rapide,

éxactement! je lis le fichier temporairement et je traitement directement à une facon que je lis ligne par ligne, je filtre les ligne que j'en ai besoin, ensuite je partage chaque phrase/ligne voulu pour que je les mettres dans le tableau.

Avec le code que tu m'as donné ca ne marche pas (j'ai remplacé $file par la variable temporaire "$temp_datei")
il me propose de sauvegarder le fichier "export.php" même et ce dérnier contient ces lignes suivantes:

Warning:  filesize() [function.filesize]: stat failed for ./temp/ in D:\xampp\htdocs\pndh-final\export.php on line 8

Warning:  Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\pndh-final\export.php:8) in D:\xampp\htdocs\pndh-final\export.php on line 8
Messages postés
3
Date d'inscription
mercredi 22 octobre 2008
Statut
Membre
Dernière intervention
28 octobre 2008

salut!!

n'y-a-t-il pas des ideés??