aus einer db-erzeugten Tabelle eine xls-Datei zum Download machen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • aus einer db-erzeugten Tabelle eine xls-Datei zum Download machen

    So,

    als Anfänger setzt man sich gerne große Aufgaben

    Ich habe folgendes Skript:

    $abfrage = "SELECT spieler_team_id, SUM(spieler_tore) AS tore, SUM(spieler_assist) AS assist, SUM(spieler_tore + spieler_assist) as scorer, SUM(spieler_strafen) as strafen, SUM(spieler_schuesse) AS schuss, SUM(zweikampf_off_gew) AS og, SUM(zweikampf_off_ver) AS ov, SUM(zweikampf_def_gew) AS dg, SUM(zweikampf_def_ver) AS dv, SUM(bullie_gew) AS bg, SUM(bullie_ver) AS bv, hm_team
    from $tabelle, hm_teams
    WHERE spieler_team_id=teamnummer AND spieler_pos != 'T'
    GROUP BY spieler_team_id
    ORDER BY $order $desc";

    Daraus wird mir eine schöne Tabelle erzeugt, die ich dann auch auf dem Bildschirm habe. Wie schaffe ich es nun, diese erzeugte Tabelle per php-Skript zum Download zur Verfügung zu stellen, so dass ein User eine xls-Datei erhält.

  • #2
    bissl spät aber besser als gar ned =)

    am einfachsten isses wenn du tabulatoren getrennt deine werte hinschreibst und mit der datei mit header() den passenden mime typ verpasst ..

    ich denke header("Content-Type: application/vnd.ms-excel);
    do müsste das lauten
    mfg,
    [color=#0080c0]Coragon[/color]

    Kommentar


    • #3
      Das Post ist wohl irgendwie untergegangen.

      i.d.R. macht man daraus CSV-Dateien. Als Trenner ist Tab eigentlich gut geeignet. Wobei auch ; ein gängiges Format ist, darfst dann allerdings keine Semicolons in deinen Inhalten haben.

      Eigentliche Excel-Dateien (.xls) kannst du nicht erzeugen (zumindest nicht so einfach.

      Kommentar


      • #4
        http://byting.mirrors.phpclasses.org...el&go_search=1

        Kommentar


        • #5
          Mit dieser Klasse
          http://www.phpclasses.org/browse.html/package/767.html
          dieser Tabelle:
          Code:
          mysql> describe demo;
          +----------+-------------+------+-----+---------+-------+
          | Field    | Type        | Null | Key | Default | Extra |
          +----------+-------------+------+-----+---------+-------+
          | year     | varchar(4)  | YES  |     | NULL    |       |
          | response | varchar(10) | YES  |     | NULL    |       |
          +----------+-------------+------+-----+---------+-------+
          2 rows in set (0.00 sec)
          und diesem Skript
          PHP-Code:
          <?php
          require_once('Worksheet.php');
          require_once(
          'Workbook.php');

          function 
          HeaderingExcel($filename) {
              
          header("Content-type: application/vnd.ms-excel");
              
          header("Content-Disposition: attachment; filename=$filename);
              
          header("Expires: 0");
              
          header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
              
          header("Pragma: public");
          }

          HeaderingExcel('name.xls');

          $workbook = new Workbook("-");

          $worksheet =& $workbook->add_worksheet('Arbeitsblatt von hand');

          $formatot =& $workbook->add_format();
          $formatot->set_size(10);
          $formatot->set_align('center');
          $formatot->set_color('white');
          $formatot->set_pattern();
          $formatot->set_bold();
          $formatot->set_fg_color('black');

          mysql_connect("localhost""""") or die("could not connect");
          mysql_select_db("test"); 

          $query "SELECT * FROM demo";
          $result mysql_query($query);

          $worksheet->write_string(0,0,"year",$formatot);
          $worksheet->write_string(0,1,"response",$formatot);
          while (
          $row mysql_fetch_array($result)) {
              
          $ct++;
              
          $worksheet->write_string($ct,0,"$row[year]");
              
          $worksheet->write_string($ct,1,"$row[response]");
          }
          $workbook->close();
          ?>
          Wird ganz exzellent ein Excel File generiert.

          Kommentar


          • #6
            Für diejenigen, die sich dort nicht registrieren wollen, die dort zur Verfügung gestellte Klasse:
            Angehängte Dateien

            Kommentar


            • #7
              @ hand

              willste jetzt ganz phpclasses auf php-resource auslagern ? *gg*
              wer das zeug verwenden will soll sich auch registrieren, kost' eh nix !!
              mfg,
              [color=#0080c0]Coragon[/color]

              Kommentar


              • #8
                Nein, Meister aller Gilden, das liegt mir ferne ...

                Kommentar


                • #9
                  hä ? bist du DER hand ? *g*
                  wenn ja dann überraschts mich dass bei dir kärnten als wohnort steht ..
                  mfg,
                  [color=#0080c0]Coragon[/color]

                  Kommentar


                  • #10
                    Meister, laßt Euch nicht in die Irre führen. Ja, in der Tat, ich bin es "hand". Doch denke ich, nein ich bin mir sicher, mit jenem "hand", den Ihr Meister meint, habe ich nichts zu tun.

                    Habt Euch Wohl,
                    h.a.n.d.

                    Kommentar


                    • #11
                      Vielen Dank für die Antwort, hand. Ich werde es mir am WE anschauen und wenns funktioniert, dann bedanke ich micht schon mal jetzt im vorraus.

                      Kommentar


                      • #12
                        Hallo Leute,

                        mhhh ich habe mal das Script getestet und bekomme folgende Anzeige in Excel

                        <br />
                        <b>Warning</b>: tempnam() [<a href='http://www.php.net/function.tempnam'>function.tempnam</a>]: open_basedir restriction in effect. File(/tmp) is not within the allowed path(s): (/usr/local/httpd/htdocs/kunden/web152) in <b>/usr/local/httpd/htdocs/kunden/web152/html/test/OLEwriter.php</b> on line <b>75</b><br />
                        Can't create temporary file.

                        Ich habe auch ein 'tmp-Verzeichnis' angelegt und
                        alle Rechte auf 777 gesetzt.

                        Danke im voraus Gruß Manuela

                        Kommentar


                        • #13
                          Temporärer Pfad

                          Ich habe das selbe Problem wie im vorigem Statement!

                          Eine Lösung wäre gut.

                          Gibt es hier keine Leute, die das Problem lösen könnten.

                          Ich bekomme diese Meldung nur am Webserver.
                          Beim Test am eigenen Rechner funkt alles. Hier ist aber die Rechteverteilung anders als auf einem Webserver des Providers.

                          Was tun???????

                          Bitte um Hilfe

                          Georg

                          Kommentar


                          • #14
                            Temp - Problem

                            habe das temp - Problem lösen können.

                            In meinem Homeverzeichnis auf dem Webserver liegt ein Verzeichnis mit dem Namen "phptmp".

                            Ich habe dnn nach einigen Probieren die Zeile 75 der Datei "OLEWriter.php"
                            so abgeändert:

                            $this->_tmp_filename = tempnam("/home/www/web858/phptmp", "OLEwriter");

                            Jetzt funktioniert es!

                            Georg

                            Kommentar

                            Lädt...
                            X