Mein eigener kleiner Beitrag zu Google Code und der PHP-Windows Völkerverständigung (oder: Excel aus PHP generieren)

Zwei Dinge haben mich schon lange genervt: Excel aus PHP generieren und ich habe kein eigenes Code-Projekt, obwohl ich an manchen Tagen 15 Stunden im vi hänge. Sprach’s und schlug beide Fliegen mit einer Klappe. Google Code ist Googles Sourceforge (oder fooforge oder barforge oder was-auch-immer-forge). Neben den ganzen (offenen) Entwicklungen bei Google, enthält es auch ein “Projekt Hosting” – jeder kann dort seine Projekte hosten, entwickeln, sich darüber austauschen etc. Neben einem pro Projekt verfügbaren Subversion gibt es ein kleines Wiki, ein paar editierbare Seiten, ein winziges Ticketsystem und …äh… 100 MB Speicherplatz.

Die Crux mit Excel

Excel-Dokumente aus PHP generieren ist schmerzhaft. Terabyte-grosse Bibliotheken bieten alles bis zum letzten Graphen, funktionieren am Ende aber nur leidlich gut. Klar, PHP = UNIX (pssst, ich hoffe, das hört kein PHPler hier), Excel = Windows, ergo PHP & Excel = nicht gut. Dabei ist alles, was ich normalerweise in Excel packen will, wirklich überschaubar: Ein zweidimensionales Array und Feierabend. Damit kann man meterweise unterschiedliche Anforderungen erfüllen.Ich habe mich nun schon wirklich oft umgesehen, die eine oder andere Bibliothek getestet und wieder verworfen. In der letzten Zeit nutze ich massiv (auf Rat von Martin) den MySQL Query Browser. Fantastisches Ding. Vor allem, wenn ich den einen oder anderen Dump generiere und als “Excel-Dokument” speichere, nutzt der Query Browser das Microsoft Open XML-Format für Microsoft Excel 2003. Excel öffnet das Ding daraufhin ohne Probleme für Leib, Leben oder Rechner.Nachdem die Glühbirne hell genug geleuchtet hat, kann ich nun endlich mein eigenes, winziges Codeprojekt veröffentlich: php-excel, eine wirklich kleine Klasse (in PHP5), um eine Excel-Datei aus einem zweidimensionalen Array zu erzeugen und diese per header() an den Browser auszuliefern.Im Wiki gibt es dazu bereits eine kleine Anleitung und eine frühe (aber voll funktionsfähige) Version kann man sich aus dem Subversion Repository Browser laden.

Nochmal zurück zu code.google.com

Gefällt mir prinzipiell sehr gut (ja, ja, ich kenne auch die witzigen Suchergebnisse für dummy+code usw.). TortoiseSVN auf einem Windows-Bock einzurichten und mit code.google.com ans Laufen zu bringen, war wirklich kein Aufwand (Tipp: Das Passwort zu eurem SVN ist NICHT euer GMail-Passwort ;). Vielleicht schreibe ich dazu nochmal einen Artikel.Wahrscheinlich habe ich wieder mal das Rad erfunden, ist mir aber egal, die anderen Räder waren mir zu schwer und rollen konnten die auch nicht richtig. Kommentare, Verbesserungswünsche oder -ratschläge und vor allem Testberichte gerne hier in den Kommentaren oder unter den issues auf der Projektseite.

Dieser Beitrag wurde unter Unsortiert abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

4 Antworten auf Mein eigener kleiner Beitrag zu Google Code und der PHP-Windows Völkerverständigung (oder: Excel aus PHP generieren)

  1. vememas sagt:

    hey, sehr gute idee…stand kürzlich vor dem gleichen Problem,ich hab es so gelöst:array (“Oliver”, “Peter”, “Paul”),array (“Marlene”, “Lucy”, “Lina”));var_dump($doc);$file = fopen(“test.xls.csv”, w);foreach ($doc as $sName => $aName) {$max_count = array_sum($doc[$aName]);echo $max_count;foreach ($aName as $sName => $sValue) {$xls .= $sValue.”;”;}$xls .= “n”;}fwrite($file, $xls);echo “nn”.$xls;echo “test.xls.csv“;fclose($file);exit();?>Ist zwar nicht so schön wie deins aber funktioniert….GLG Vememas

  2. Phil sagt:

    Hey, cooles Ding, aber zwei Probleme treten bei mir auf. 1. Ich musste den UTF8 encode rausnehmen, weil meine Seite schon in UTF8 ist…2. Excel 2007 beschwert sich beim Öffnen mit einer Fehlermeldung, dass der Dateiinhalt nicht zur Erweiterung passt. Wenn ich das als .xml speichere, dann macht es keine Probleme.

  3. Hasematzel sagt:

    Danke für den Tipp, Phil. Ich schaue mir das Encoding noch einmal an. Excel 2007 ist für mich im Moment noch nicht testbar, aber ich hatte aus den Dokumentationen entnommen, dass (lt. Microsoft) eigentlich keine Änderungen an der OpenXML-Struktur notwendig sein solle.Wie dem auch sei, vielen Dank, ich schaue mir das nochmal an und werde die Änderungen im nächsten Release reinpatchen.

  4. Phil sagt:

    Es ist wohl auch nicht an Dateiinhalt an sich, der funktioniert super. Es kommt aber eine Warnung, wenn du die Datei als .xls speicherst. Ich lasse es in der Klasse jetzt als .xml senden und habe Excel als Standardprogramm dafür eingerichtet, dann kommt keine Meldung. Also ist es wohl so, dass Excel nun eine weitere Überprüfung des Inhalts macht, die es vorher nicht gab. Aber auch wenn du es als .xls speicherst und die Meldung bestätigst, dann ist die Tabelle wunderbar.

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>