Sahra: xls file erzeugen

Hallo,

ich erzeuge ein xls file mit

$file = fopen($pathfilename, "w");
fwrite($file, $this->file.$this->__EOF());
chmod($pathfilename,0664);
fclose($file);

will ich es dann auslesen wird gemeckert

if (substr($this->data, 0, 8) != IDENTIFIER_OLE) {
   $this->error = 1;
   return false;
}

wie bekomme ich da den richtigen Fileanfang hin?

Bis dann
Sahra

  1. Hi there,

    ich erzeuge ein xls file mit

    Was ist ein xls-File? Meinst Du eine Datei im Excelformat? Die erzeugst Du sicher nicht so.

    $file = fopen($pathfilename, "w");
    fwrite($file, $this->file.$this->__EOF());
    chmod($pathfilename,0664);
    fclose($file);

    was genau schreibst Du da wohin? Und wofür änderst Du die Dateirechte?

    will ich es dann auslesen wird gemeckert

    if (substr($this->data, 0, 8) != IDENTIFIER_OLE) {
       $this->error = 1;
       return false;
    }

    Ich hab PHP noch nie meckern hören. Fehlermeldung gibt PHP manchmal von sich, aber Meckern noch nie. Falls das bei Deinem PHP auch so ist, wäre es hilfreich, die Fehlermeldung in Erfahrung zu bringen...

    wie bekomme ich da den richtigen Fileanfang hin?

    Welcher Farbe sollte er denn haben?

    1. Hallo,

      ich erzeuge das File genau so. Mit Textdateien etc geht es ja auch.

      function __BOF() {
             return pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
         }

      function __EOF() {
             return pack("ss", 0x0A, 0x00);
         }

      ich denke es hat damit zu tun. Leider finde ich seit 2 Tagen keine Lösung. Und das wo ich die Datei wenn ich sie erzeuge öffnen kann und alles gut ausschaut. Am besten wäre natürlich wenn ich eine gute Klasse finden würde. Ich änge Sie mal ganz hier an. Export habe ich halt selber hinzugefügt. Vielleicht kannst du mir helfen was ich da reinschreiben kann.

      Danke
      S

      <?php
      class ExcelExport {
         var $file;
         var $row;

      function ExcelExport() {
            $this->file = $this->__BOF();
            $row = 0;
         }

      function __BOF() {
             return pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
         }

      function __EOF() {
             return pack("ss", 0x0A, 0x00);
         }

      function __writeNum($row, $col, $value) {
             $this->file .= pack("sssss", 0x203, 14, $row, $col, 0x0);
             $this->file .= pack("d", $value);
         }

      function __writeString($row, $col, $value ) {
             $L = strlen($value);
             $this->file .= pack("ssssss", 0x204, 8 + $L, $row, $col, 0x0, $L);
             $this->file .= $value;
         }

      function writeCell($value,$row,$col) {
            if(is_numeric($value)) {
               $this->__writeNum($row,$col,$value);
            }elseif(is_string($value)) {
               $this->__writeString($row,$col,$value);
            }
         }

      function addRow($data,$row=null) {
            //If the user doesn't specify a row, use the internal counter.
            if(!isset($row)) {
               $row = $this->row;
               $this->row++;
            }
            for($i = 0; $i<count($data); $i++) {
               $cell = $data[$i];
               $this->writeCell($cell,$row,$i);
            }
         }

      function download($filename) {
            header("Pragma: public");
            header("Expires: 0");
            header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            header("Content-Type: application/force-download");
            header("Content-Type: application/octet-stream");
            header("Content-Type: application/download");;
            header("Content-Disposition: attachment;filename=$filename ");
            header("Content-Transfer-Encoding: binary ");
            $this->write();
         }

      function export($pathfilename) {  
      

      $file = fopen($pathfilename, "w");
      fwrite($file, $this->file.$this->__EOF());
      chmod($pathfilename,0664);
      fclose($file);
         }

      function write() {
            echo $file = $this->file.$this->__EOF();
         }
      }
      ?>

      1. Hi there,

        ich denke es hat damit zu tun. Leider finde ich seit 2 Tagen keine Lösung. Und das wo ich die Datei wenn ich sie erzeuge öffnen kann und alles gut ausschaut. Am besten wäre natürlich wenn ich eine gute Klasse finden würde. Ich änge Sie mal ganz hier an. Export habe ich halt selber hinzugefügt. Vielleicht kannst du mir helfen was ich da reinschreiben kann.

        Leider hast Du noch immer nicht geschrieben, WAS genau nicht funktioniert; Anyway, ich verwende zum Erzeugen von Excel-Dateien die writeexcel-Library von Johann Hanne, das funktioniert idR sehr zufriedenstellend.

        1. Oje, Link hat nicht funktioniert:

          writeexcel-Library

          jetzt gehts...;)

          1. ok ich schaue
             mir das an...danke

            1. Hallo,

              ich habe jetzt geschaut. Hier wird auch nur direkt das "Speichern unter" angeboten. Ich möchte die Datei aber im richtigen Filesystem erzeugen und ablegen. Die Header Lösung bietet mein Script auch schon.

              Danke
              S

              1. http://msdn.microsoft.com/en-us/library/cc546605%28office.12%29.aspx
                http://msdn.microsoft.com/en-us/library/cc313154%28office.12%29.aspx