tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von saftmeister
  • 1 Beitrag von saftmeister
  • 1 Beitrag von Dr Dau
ERLEDIGT
NEIN
ANTWORTEN
6
ZUGRIFFE
492
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    flohaase flohaase ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Hey Leute

    Ich versuche gerade eine Liste mit Kundendaten, die ich aus meiner mySQL-Datenbank auslese in eine OpenOffice Calc-Datei zu exportieren. Für eine Excel-Datei benutze ich derzeit folgenden Code:

    PHP-Code:
        //mySQL-Abfrage

            
    $header .= Kundennummer "\t";
            
    $header .= Name "\t";
            
    $header .= Postleitzahl "\t";
            
    $header .= Stadt "\t";

            while(
    $row mysql_fetch_row($export)) {  
                
    $line '';  
                foreach(
    $row as $value) {                                             
                    if ((!isset(
    $value)) OR ($value == "")) {  
                    
    $value "\t";  
                    } else {  
                        
    $value str_replace('"''""'$value);
                        
    $value '"' $value '"' "\t";
                    }  
                    
    $line .= $value
                }
                
                
    $data .= trim($line)."\n";

            }  
        
        
    $data str_replace("\r","",$data); 

        
    $currentDate date('d.m.Y');
        
    $fileName ’NAME '.$currentDate.'';

        // Anzahl der Einträge zählen
        
        $fileHead = utf8_decode(’Titel'
    );
        
    $fileColsingCount utf8_decode('Anzahl der Einträge: '.$count_sho.'');
        
    $fileColsingDate 'Stand: ' $currentDate '';
        
    $decodeData utf8_decode($data);
        
        
    header("Content-type: application/octet-stream“); // speziell für Excel
        header("
    Content-Dispositionattachmentfilename=".$fileName.".xls“); // speziell für Excel
        
    header("Pragma: no-cache");  
        
    header("Expires: 0");
        print 
    "$fileHead\n\n$header\n\n$decodeData\n$fileColsingCount\n$fileColsingDate"
    Ich dachte, dass ich mir die beiden Zeilen speziell für Excel ändern muss. Ich bin davon ausgegangen, dass OOo Calc ebenso mit Tabs \t arbeitet.

    Folgendes habe ich schon versucht:

    PHP-Code:
    header('Content-type: application/vnd.sun.xml.calc‘); 
    oder
    PHP-Code:
    header('Content-type: application/vnd.oasis.opendocument.spreadsheet‘); 
    Außerdem habe ich die Dateiendung in .ods, in o.odf und in .scx geändert.

    Das Ergebnis war, dass sich anstelle von OOo Calc sich der normale Writer geöffnet hat und darin die Daten zwar zu sehen war, aber nicht formatiert.

    Weiß einer weiter?

    Vielen Dank, Gruß Flo
     

  2. #2
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    flohaase bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #3
    flohaase flohaase ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Ok, ich werde mich mal anmelden und schauen, ob ich die paar wichtigen Zeilen für meinen Code finde. Danke
     

  4. #4
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Grundsätzlich würde ich dir ja vorschlagen, es als CSV zu implementieren. CSV hat den Vorteil, das man es in einer beliebigen Anwendung (sei es Calc, Writer, Excel oder Word) öffnen kann und es immer korrekt funktioniert.

    Die dazu notwendige Funktion kannst du hier finden: http://php.net/manual/en/function.fputcsv.php

    Um es wirklich als OOo-Dokument zu implementieren brauchst du mehr, als nur eine Datei, in der die Inhalte drin stehen. OOo-Dokumente bestehen aus einem ZIP-Komprimierten Archiv, in welchem vor allem auch Meta-Informationen über das Spreadsheet stehen. Dafür kannst du die Klasse verwenden, die du im meinem ersten Post finden kannst. Denn die Klasse erstellt ein tatsächliches OOo-Dokument mit allen Meta-Informationen, die dafür notwendig sind. Dafür darfst du Klasse aber nicht auseinander nehmen sondern musst sie als komplette Bibliothek einbauen.
    flohaase bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #5
    flohaase flohaase ist offline Rookie
    Registriert seit
    Jul 2011
    Beiträge
    7
    Ok, dann werde ich mir das CSV Ding mal anschauen.

    Eine nichtformatierte Liste in eine Excel-Datei zuschreiben ist ja recht einfach, daher dachte ich, dass es vllt eben so leicht ist, sie in eine OOo-Datei zu speichern.

    Danke
     

  6. #6
    Avatar von Dr Dau
    Dr Dau Dr Dau ist offline ich wisch hier durch
    Registriert seit
    Feb 2005
    Ort
    hinterm Mond gleich Links
    Beiträge
    6.160
    Blog-Einträge
    4
    Hallo!

    Zitat Zitat von saftmeister Beitrag anzeigen
    Um es wirklich als OOo-Dokument zu implementieren brauchst du mehr, als nur eine Datei, in der die Inhalte drin stehen.
    Naja, es würde ja noch *.fods (OpenDocument Spreadsheet (Flat XML)) geben, also eine einzelne XML-Datei.
    Aber wirklich einfacher macht es die Arbeit auch nicht.
    Zelle A1 bis A3 mit jeweils dem Wert 2, Zelle A4 mit der Summe aus Zelle A1 bis A3 --> macht mal eben locker 235 Zeilen XML-Code.
    Ich würde daher auch eher eine CSV-Datei vorziehen.
    Nicht nur weil eine CSV-Datei mit viel weniger "Code" auskommt, sondern auch weil sie ganz einfach aufgebaut ist.

    Gruss Dr Dau
    flohaase bedankt sich. 
    Schri-Schra-Schrödi *g*
    mehrspaltiges/zeiliges Seitenlayout mit DIV's und CSS
    Dinge, die mit Tabellen besser klappen als mit CSS
    Ausgabe von Datum/Zeit unabhängig von der Server Zeitzone [php]
    Meine Links zum Thema Linux (Last update: 29.10.2011)
    Kein Busen ist so flach wie das Niveau dieser Party!
    ----
    Alte Weisheit: wer uns in den Arsch kriecht wird beschissen!
    ----
    Ich habe 3 Kinder und kein Geld!
    Warum kann ich nicht keine Kinder haben und 3 Geld?! (Homer Jay Simpson)

  7. #7
    Avatar von Lime
    Lime Lime ist gerade online frisch fruchtig
    Registriert seit
    Jul 2011
    Beiträge
    373
    Beispiel für eine CSV:

    PHP-Code:
    //Datei öffnen (Rechte festlegen)
    $file fopen('file.csv''w');

    //Anlegen eines Arrays. Eine Zeile besteht aus allen Variablen des Arrays.
    $array = array('name''telefonnummer''adresse''email');
    fputcsv($file$array);

    //while-schleife für die Werte... wir gehen davon aus, dass bereits eine Mysql-Abfrage vorhanden ist
    while($row mysql_fetch_object($sqlQry))
    {
       unset(
    $array);
       
    $array = array($row->name$row->tel$row->adresse$row->email);
       
    fputcsv($file$array);
    }

    fclose($file); 
    Das wär eigentlich schon alles...
    Wichtig wäre vielleicht, bei der Funktion fputcsv einen weiteren Parameter anzugeben
    PHP-Code:
    fputcsv($file$array';'); 
    Damit kann man festlegen, dass das Trennungszeichen ein Semikolon (Strichpunkt) ist.

    Du könntest theoretisch auch alles selber in eine CSV-File schreiben, ist aber wesentlich aufwendiger... dafür gibts ja extra die schönen Funktionen.
     

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 20.02.09, 13:01
  2. Excel bzw OpenOffice Calc
    Von bergonline im Forum Office-Anwendungen
    Antworten: 6
    Letzter Beitrag: 17.10.08, 21:49
  3. OpenOffice (Calc) - Relative Links zu externen Dokumenten
    Von Fanthom im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 21.07.08, 00:30
  4. OpenOffice Calc: Verweisformel fest an Spalte binden?
    Von yLLiam im Forum Office-Anwendungen
    Antworten: 1
    Letzter Beitrag: 05.03.08, 11:50
  5. Hab ein kleines Problem mit Excel bzw. Openoffice Calc
    Von Kyrodust im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 22.04.06, 02:15