Spreadsheet_Excel_Writer

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

  • Spreadsheet_Excel_Writer

    Hallo Leute

    Ich generiere mit der Spreadsheet_Excel_Writer (PEAR Klasse )

    aus Mysql eine Excel Tabelle.

    Zuhause funktionierts wunderbar. Auf dem Server nicht?


    Hier mein script:

    PHP-Code:
    <?php
    require_once 'path.php';
    require_once 
    'db.inc';
    require_once 
    'Spreadsheet/Excel/Writer.php';

    // Creating a workbook
    $workbook = new Spreadsheet_Excel_Writer();

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

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

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

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

    $datum date("d.m.y");  


    // The actual data
    $worksheet->write(00'Mitglieder WIR-Regionalgruppe Ostschweiz',$format_tableueberschrift);
    $worksheet->write(010'Stand:',$format_tableueberschrift);
    $worksheet->write(011$datum,$format_tableueberschrift);
    $worksheet->write(20'Firma',$format_tableueberschrift);
    $worksheet->write(21'Branche',$format_tableueberschrift);
    $worksheet->write(22'Name',$format_tableueberschrift);
    $worksheet->write(23'Vorname',$format_tableueberschrift);
    $worksheet->write(24'Strasse',$format_tableueberschrift);
    $worksheet->write(25'Nr.',$format_tableueberschrift);
    $worksheet->write(26'PLZ',$format_tableueberschrift);
    $worksheet->write(27'Ort',$format_tableueberschrift);
    $worksheet->write(28'Telefon',$format_tableueberschrift);
    $worksheet->write(29'Fax',$format_tableueberschrift);
    $worksheet->write(210'E-Mail',$format_tableueberschrift);
    $worksheet->write(211'Web',$format_tableueberschrift);


    $query "SELECT *, REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
                           REPLACE(firma, 'Ä', 'A'), 'Ö', 'O'), 'Ü', 'U'),
                           'ä', 'a'), 'ö', 'o'), 'ü','u'), 'ß', 's') AS sortiert
                 FROM mitglieder ORDER BY sortiert"
    ;
                 
                 

        if (!(
    $connection = @ mysql_connect("$hostName""$username""$password")))
            
    showerror();
            
        if (!(
    mysql_select_db($databaseName$connection)))
             
    showerror();

            
        if (!(
    $result = @ mysql_query($query$connection)))
            
    showerror();
          

    $anz 3;
    while(
    $row = @ mysql_fetch_array($result))
    {                       
    $worksheet->write($anz0$row[firma]);
    $worksheet->write($anz1$row[branche]);
    $worksheet->write($anz2$row[name]);
    $worksheet->write($anz3$row[vorname]);
    $worksheet->write($anz4$row[strasse]);
    $worksheet->write($anz5$row[nummer]);
    $worksheet->write($anz6$row[plz]);
    $worksheet->write($anz7$row[ort]);
    $worksheet->write($anz8$row[telefon]);
    $worksheet->write($anz9$row[fax]);
    $worksheet->write($anz10$row[mail]);
    $worksheet->write($anz11$row[web]);

    $anz ++;
    }


    // Let's send the file
    $workbook->close();

    header("Location: mitglieder.php");
    ?>
    Wenn ich auf dem Server probiere, sendet der zwar eine xls, aber beim öffnen kommen nur lauter Fehler.

    Hat jemad eine Idee


    Gruss SWSG
    Zuletzt geändert von swsg; 18.04.2005, 21:20.

  • #2
    http://www.php-resource.de/forum/sho...threadid=50454 lesen

    @ rausnehmen und E_ALL benutzen

    mysql_error() schauen

    register_globals vergleichen

    Kommentar


    • #3
      Hi penizillin; das war wohl eine auf die pfoten - sorry

      Ich habe keine mysql Fehler sondern die PEAR Klassen machen Fehler.

      Die Excel-Tabelle besteht dann aus Fehler anstatt den Daten

      Aber so viele das ich hir nicht alle aufliesten kann:

      <b>Warning</b>: fseek(): supplied argument is not a valid File-Handle resource in <b>.../includes/OLE/PPS.php</b> on line <b>154</b><br />

      <b>Warning</b>: fwrite(): supplied argument is not a valid File-Handle resource in <b>.../includes/OLE/PPS/Root.php</b> on line <b>234</b><br />

      usw


      <b>Warning</b>: fpassthru(): supplied argument is not a valid File-Handle resource in <b>.../includes/OLE/PPS/Root.php</b> on line <b>110</b><br />

      Kommentar


      • #4
        er wird wohl die tmp Datei auf dem Server nicht schreiben können
        TBT

        Die zwei wichtigsten Regeln für eine berufliche Karriere:
        1. Verrate niemals alles was du weißt!


        PHP 2 AllPatrizier II Browsergame

        Kommentar


        • #5
          Interssanter Hinweis


          Weisst du wo er diese speichert?


          In dem Verzeichniss indem das script ausgeführt wird?

          Kommentar


          • #6
            unter /tmp
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Ich habe nun dem Excel_Writer in einem Verzeichniss mit schreibrechten.

              Es geht immer noch nicht. Was ich herausgefunden habe:

              Spreadsheet_Excel_Writer greift ja auf die eigene PEAR Klasse OLE zurück.

              Wenn ich die neuste OLE (0.5) verwende (nur auf dem Server, bei mir zu Hause funktionierts) kann er bei mir auf dem Desktop keine Datei anlegen.
              Im Downloader steht immer: "Datei wird angelegt"

              Mit einer OLE (0.4) habe eben die schon erwähnten Fehler.


              Ein Verzeichniss /tmp gibt's bei mir nicht.

              Kommentar


              • #8
                der excel_writer braucht die version 0.5 oder höher

                http://pear.php.net/package/Spreadsh...iter/download/
                siehe unter Dependencies

                Kommentar


                • #9
                  Ich habe es!


                  Deine Vermutung war richtig TBT.

                  Was ich nicht gewusst habe dass man das Temp Verzeichniss setzen muss.


                  Befehl:
                  PHP-Code:
                  $workbook->setTempDir('mein temporäres verzeichniss'); 



                  Danke euch allen

                  Hier das ganze script für alle die sich interessieren:


                  PHP-Code:
                  <?php
                  // 
                  require_once 'db.inc';
                  require_once 
                  'Spreadsheet/Excel/Writer.php';

                  // mape generieren
                  $workbook = new Spreadsheet_Excel_Writer();

                  // temporäres verzeichniss setzen
                  $workbook->setTempDir('/tmp'); 

                  // header senden
                  $workbook->send('WIR_Mitglieder.xls');

                  // tabelle generieren
                  $worksheet =& $workbook->addWorksheet('Mitglieder');


                  // individuelles format 1
                  $format_tableueberschrift =& $workbook->addFormat();
                  $format_tableueberschrift->setBold();
                  $format_tableueberschrift->setSize(14);


                  // individuelles format 2
                  $format_ueberschrift =& $workbook->addFormat();
                  $format_ueberschrift->setBold();


                  // Stand 
                  $datum date("d.m.y");  


                  // Tabellendaten (kopfzeile)
                  $worksheet->write(00'Mitglieder WIR-Regionalgruppe Ostschweiz',$format_ueberschrift);
                  $worksheet->write(010'Stand:',$format_ueberschrift);
                  $worksheet->write(011$datum,$format_ueberschrift);
                  $worksheet->write(20'Firma',$format_ueberschrift);
                  $worksheet->write(21'Branche',$format_ueberschrift);
                  $worksheet->write(22'Name',$format_ueberschrift);
                  $worksheet->write(23'Vorname',$format_ueberschrift);
                  $worksheet->write(24'Strasse',$format_ueberschrift);
                  $worksheet->write(25'Nr.',$format_ueberschrift);
                  $worksheet->write(26'PLZ',$format_ueberschrift);
                  $worksheet->write(27'Ort',$format_ueberschrift);
                  $worksheet->write(28'Telefon',$format_ueberschrift);
                  $worksheet->write(29'Fax',$format_ueberschrift);
                  $worksheet->write(210'E-Mail',$format_ueberschrift);
                  $worksheet->write(211'Web',$format_ueberschrift);



                  // mysql Tabelle einlesen und zeile für zeile in Tabelle
                  $query "SELECT *, REPLACE( REPLACE( REPLACE( REPLACE( REPLACE( REPLACE(
                                         REPLACE(firma, 'Ä', 'A'), 'Ö', 'O'), 'Ü', 'U'),
                                         'ä', 'a'), 'ö', 'o'), 'ü','u'), 'ß', 's') AS sortiert
                               FROM mitglieder ORDER BY sortiert"
                  ;
                               
                               

                      if (!(
                  $connection = @ mysql_connect("$hostName""$username""$password")))
                          
                  showerror();
                          
                      if (!(
                  mysql_select_db($databaseName$connection)))
                           
                  showerror();

                          
                      if (!(
                  $result = @ mysql_query($query$connection)))
                          
                  showerror();
                        

                  $anz 3;
                  while(
                  $row = @ mysql_fetch_array($result))
                  {                       
                  $worksheet->write($anz0$row[firma]);
                  $worksheet->write($anz1$row[branche]);
                  $worksheet->write($anz2$row[name]);
                  $worksheet->write($anz3$row[vorname]);
                  $worksheet->write($anz4$row[strasse]);
                  $worksheet->write($anz5$row[nummer]);
                  $worksheet->write($anz6$row[plz]);
                  $worksheet->write($anz7$row[ort]);
                  $worksheet->write($anz8$row[telefon]);
                  $worksheet->write($anz9$row[fax]);
                  $worksheet->write($anz10$row[mail]);
                  $worksheet->write($anz11$row[web]);

                  $anz ++;
                  }


                  //Mappe senden
                  $workbook->close();

                  ?>
                  Zuletzt geändert von swsg; 19.04.2005, 11:44.

                  Kommentar

                  Lädt...
                  X