While Schleife im Spreadsheet Excel Writer

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

  • While Schleife im Spreadsheet Excel Writer

    Hallo!

    Ich habe ein GROSSES Problem, ich möchte die Daten aus meiner SQL Tabelle mit der while Schleife auslesen und sie dann mit dem Excel Writer in eine Excel Tabelle exportieren.

    Mein Script was ich im moment zusammengebastelt habe sieht so aus:

    include_once "Spreadsheet/Excel/Writer.php";

    $xls =& new Spreadsheet_Excel_Writer();
    $xls->send("Liste.xls");

    $sheet =& $xls->addWorksheet('Test results');
    $format =& $xls->addFormat();
    $format->setBold();
    $format->setColor("black");
    $sheet->write(0,0,"Nachname",$format);
    $sheet->write(0,1,"Vorname",$format);
    $sheet->write(0,2,"Straße",$format);
    $sheet->write(0,3,"PLZ",$format);
    $sheet->write(0,4,"Ort",$format);

    include('verbindung.php');
    $sql="SELECT * FROM `mitglieder` WHERE `status` = 'Aktives'";
    $abfrage=mysql_query($sql);
    for ( $i = 1; $i <= 50; ++$i ){
    while ($ergebnis=mysql_fetch_array($ergebnis)){
    $sheet->write($i,0,$ergebnis['vorname']);
    $sheet->write($i,1,$ergebnis['nachname']);
    $sheet->write($i,2,$ergebnis['strasse']);
    $sheet->write($i,3,$ergebnis['plz']);
    $sheet->write($i,4,$ergebnis['ort']);
    }}

    $xls->close();

    Es wird mir zwar eine xls Datei zum Download angeboten jedoch wenn ich sie öffne, dann steht da nichts drin.

    Ich danke schon einmal für jede HILFE!

  • #2
    1. Amtshandlung: Die generierte Excel-Datei in einem Editor anschauen. Mit großer Sicherheit steht dort ein PHP-Fehler drin.

    Kommentar


    • #3
      Der einzige Grund, den ich mir vorstellen kann, ist, dass die Abfrage nichts zurückgibt. Hast du sie mit einem SQL-Monitor getestet?
      Andernfalls würdest du vermutlich 50 mal die letzte Zeile erhalten (weil du für jede Zeile durch alle Datensätze iterierst.) Bei einem anständig formatierten Code wäre das auch sofort ersichtlich.
      EDIT:

      Stimmt natürlich nicht, da der DB-Cursor ja dann nach der ersten Zeile abgearbeitet ist, kommt nachher natürlich nichts mehr

      Zuletzt geändert von H2O; 18.06.2008, 12:04.
      Gruss
      H2O

      Kommentar


      • #4
        Ok habe den ersten Feheler gefunden, hatte im mysql_fetch_array die falsche Variabel drin stehen.

        jetzt zeigt es mir meine datensätze zwar an jedoch mit ganz vielen Kästechen, Y und sonstigen Zeichen dazwischen. an was könnte das wieder liegen hier nochmals das verbesserte Script:

        <?php
        include_once "Spreadsheet/Excel/Writer.php";



        $xls =& new Spreadsheet_Excel_Writer();
        $xls->send("Liste.xls");

        $sheet =& $xls->addWorksheet('mitglieder');

        $format =& $xls->addFormat();
        $format->setBold();
        $format->setColor("black");

        $sheet->write(0,0,"Nachname",$format);
        $sheet->write(0,1,"Vorname",$format);
        $sheet->write(0,2,"Straße",$format);
        $sheet->write(0,3,"PLZ",$format);
        $sheet->write(0,4,"Ort",$format);

        $a = 0;
        $b = 0;
        $c = 0;
        $d = 0;
        $e = 0;

        include('verbindung.php');
        $sql="SELECT * FROM `mitglieder` WHERE `status` = 'Aktives'";
        $abfrage=mysql_query($sql);

        while ($ergebnis=mysql_fetch_array($abfrage)){

        $nachname=$ergebnis['nachname'];
        $vorname=$ergebnis['vorname'];
        $strasse=$ergebnis['strasse'];
        $plz=$ergebnis['plz'];
        $ort=$ergebnis['ort'];

        $sheet->write($a++,0,$nachname);
        $sheet->write($b++,1,$vorname);
        $sheet->write($c++,2,$strasse);
        $sheet->write($d++,3,$plz);
        $sheet->write($e++,4,$ort);
        }

        $xls->close();
        ?>
        

        Kommentar


        • #5
          Poste mal ein fertiges XLS.

          Kommentar


          • #6
            Hier ist die Excel Datei!
            Angehängte Dateien

            Kommentar


            • #7
              Hmm nee kein Plan was das ist
              Ich würde auf irgendeine Zeichensatz-Geschichte tippen (UTF-8-Daten aus der Datenbank o.ä. - Codierungen überprüfen).
              Was ist das für Zeug hinter dem "?>" ?

              Kommentar


              • #8
                Das ist nichts. ist irgenwie da rein gekommen. keine Ahnung.
                Danke für deinen lösungsversuch.

                NÄCHSTER BITTE

                Kommentar


                • #9
                  Bitte!

                  Original geschrieben von Anubis1403
                  Das ist nichts. ist irgenwie da rein gekommen. keine Ahnung.
                  Das hast du aber rausgenommen und es dann nochmal probiert?

                  Danke für deinen lösungsversuch.
                  Du hast die hälfte von dem, was ich geschrieben habe, ignoriert. Wie siehts aus mit den Zeichensätzen?
                  Zuletzt geändert von pekka; 10.07.2008, 13:14.

                  Kommentar


                  • #10
                    Die Kästchen musste ich nich rausnehmen denn sie sind gar nicht im Script. Das ist irgendwie beim Kopieren in dieses Forum passiert

                    Ich benutze den ganz normalen Zeichensatz mit Ä,Ö,Ü,ß.

                    Welchen Zeichensatz würdest denn du empfehlen?

                    Muss mann einen bestimmten für Excel verwenden?

                    Kommentar


                    • #11
                      Mit welchem Zeichensatz sind die Daten in der mySQL-Datenbank gespeichert. Das siehst du im phpMyAdmin.

                      Kommentar


                      • #12
                        Das hier ist mein Zeichensatz in meiner MySQL Tabelle

                        latin1_general_ci

                        Kommentar


                        • #13
                          Hallo

                          ich hab ein probl. hab folgende skript:

                          <?php


                          include ("./open.inc.php");

                          echo

                          "<br>".


                          "<font >Liste der Betriebe</font>".

                          "<br>".
                          "<br>".


                          "<table border='1'><tr><td>";



                          $teil = mysql_query("SELECT * FROM arbeitg ",$conn);


                          echo "<table cellspacing='0' cellpadding='3' border='1' >". // align='center'


                          "<tr>".
                          "<td>".
                          "<a href='./Betrieb.xls'><img src='excel.jpg' width='25' height='25' border='0' alt=''></a>".
                          "</td>".
                          "</tr>".

                          "</table>".

                          "</td>".
                          "</tr>".

                          "</table>";




                          require_once 'Spreadsheet/Excel/Writer.php';

                          // Creating a workbook
                          $workbook = new Spreadsheet_Excel_Writer('Betrieb.xls');

                          // sending HTTP headers
                          $workbook->send('Betrieb.xls');

                          // Creating a worksheet
                          $worksheet =& $workbook->addWorksheet('Betrieb');

                          $format_tableueberschrift =& $workbook->addFormat();
                          $format_tableueberschrift->setBold();
                          $format_tableueberschrift->setSize(12);

                          $format_ueberschrift =& $workbook->addFormat();
                          $format_ueberschrift->setBold();


                          // Die aktuelle Daten

                          $worksheet->write(0, 0, 'Betriebsname',$format_tableueberschrift);
                          $worksheet->write(0, 1, 'Strasse',$format_tableueberschrift);
                          $worksheet->write(0, 2, 'PLZ',$format_tableueberschrift);
                          $worksheet->write(0, 3, 'Ort',$format_tableueberschrift);
                          $worksheet->write(0, 4, 'Tel. 1',$format_tableueberschrift);
                          $worksheet->write(0, 5, 'Tel. 2',$format_tableueberschrift);
                          $worksheet->write(0, 6, 'Fax',$format_tableueberschrift);
                          $worksheet->write(0, 7, 'E-Mail',$format_tableueberschrift);
                          $worksheet->write(0, 8, 'Ansp. Partner',$format_tableueberschrift);
                          $worksheet->write(0, 9, 'Wann am besten?',$format_tableueberschrift);




                          $anz = 1;
                          while($row = @ mysql_fetch_array($teil))
                          {
                          $worksheet->write($anz, 0, $row[betrieb]);
                          $worksheet->write($anz, 1, $row[Str]);
                          $worksheet->write($anz, 2, $row[plz]);
                          $worksheet->write($anz, 3, $row[ort]);
                          $worksheet->write($anz, 4, $row[tel]);
                          $worksheet->write($anz, 5, $row[tele]);
                          $worksheet->write($anz, 6, $row[fax]);
                          $worksheet->write($anz, 7, $row[mail]);
                          $worksheet->write($anz, 8, $row[ansp]);
                          $worksheet->write($anz, 9, $row[wanereich]);

                          $anz ++;
                          }

                          $workbook->close();


                          ?>

                          auf localhost funkt wie eins aber auf Linux Server nicht. Da gibt er nur in Server rein kopierten Excel datei wieder.

                          Frage: wie so funkt es auf den Server nicht? (es kann nicht mit Linux zutun haben oder?)

                          Kommentar


                          • #14
                            Da gibt er nur in Server rein kopierten Excel datei wieder.

                            Kannst Du das nochmal verständlich wiederholen?

                            Kommentar


                            • #15
                              also ich hab den "Betrieb.xls" aud den Server gepackt. und jetzt bekomme ich die selber inhalt immer wieder und es wird nicht aktualliesiert.

                              Kommentar

                              Lädt...
                              X