SatansEier Geschrieben 22. März 2006 Teilen Geschrieben 22. März 2006 hallo zusammen, folgendes problem beschäftigt mich: hab ne mysql-db mit html/php frontend. nach eingabe der suchkriterien auf meiner index.php möchte ich die möglichkeit haben mein aktuelles "ausgabequery" (tabellenkopf & tabelleninhalt) in excel auszugeben und evtl. auch zu speichern. hab schon einiges versucht...angefangen bei nem einfachen link zu ner .xls mit mitgegebenem wert, bis zum neuen chaosformular ^^ ich hoff mir hat einer möglichst schnell n beispiel, ne anregung, oder was auch immer...:beagolisc Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Whatever Geschrieben 22. März 2006 Teilen Geschrieben 22. März 2006 Das ganze einfach als CSV-Datei abspeichern und in Excel öffnen? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SatansEier Geschrieben 22. März 2006 Autor Teilen Geschrieben 22. März 2006 was ist der unterschied zwischen "csv & xls" oder mit welcher funktion speiche ich das query als .csv? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 22. März 2006 Teilen Geschrieben 22. März 2006 es gibt mehrere möglichkeiten. genereriere eine "echte" excel-datei (sogenanntes BIFF) z.b. mit PEARs Spreadsheet_Excel_Writer und sende das an den client. dazu sind folgende HTTP-headerzeilen erforderlich: header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: inline; filename=\"excel.xls\""); oder generiere einfaches CSV, indem du mittels fprintf oder fputs zeilen/feldweise die felder deines resultsets in die CSV-datei schreibst. die erste zeile im CSV kann dann ja noch deine feldbezeichnungen festlegen. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SatansEier Geschrieben 22. März 2006 Autor Teilen Geschrieben 22. März 2006 sry, aber das ist eine stufe zu weit. ich kann dir jetzt schon nicht mehr ganz folgen...ich schreib in php erst seit einem monat:p Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 22. März 2006 Teilen Geschrieben 22. März 2006 du kannst ja mal die relevanten codezeilen deiner index.php von deinem "html/php frontend" posten, wo du das ergebnisset aus der mysql holst. dann lässt sich auch mit bestimmtheit sagen, wie weit du bist, bzw. was deine ausgangssituation ist. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Nachwuchsinformatiker Geschrieben 22. März 2006 Teilen Geschrieben 22. März 2006 Schau mal hier Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SatansEier Geschrieben 23. März 2006 Autor Teilen Geschrieben 23. März 2006 thx für den link nachwuchsinfo., hat mir geholfen ^^ jetzt gibt`s eigentlich nur noch ein darstellungsproblem in excel. wenn ich z.B. mir die IDs ausgeben lassen will werden die nicht, wie gewollt horizontal, sondern vertikal angezeigt...und zusätzlich stehen datensätze nur in einer spalte (also ein string, statt wie gewoll für jeden datensatz einen einzelnen). <-- das führt später zu formatierungsschwierigkeiten. <? header('Content-Type: text/x-csv'); header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT'); header('Content-Disposition: attachment; filename=print.csv'); header('Pragma: no-cache'); session_start(); include("config.inc.php"); $db=mysql_connect($db_host,$db_user,$db_pw); mysql_select_db($db_name,$db); $result=mysql_query("SELECT * FROM ma_au"); //ma_au == tabelle for($i=0, $Export=""; $i<mysql_num_rows($result); $i++) { $Daten = mysql_fetch_object($result); $Spalte[0] = str_replace("\"", "\"\"", $Daten->ma_nr); // etc. // etc. for($j=0; $j<count($Spalte); $j++) { $Export .= "\"" . $Spalte[$j] . "\""; if($j!=count($Spalte)-1) { $Export .= ";"; } } $Export .= "\r\n"; $Spalte = ""; } echo $Export; ?> [/PHP] MAHLZEIT!! *miam miam mampf* Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Amstelchen Geschrieben 23. März 2006 Teilen Geschrieben 23. März 2006 wenn ich z.B. mir die IDs ausgeben lassen will werden die nicht, wie gewollt horizontal, sondern vertikal angezeigt... verwendest du ID als (ersten) spaltennamen? excel hat m.w. probleme mit CSV-dateien, wenn das erste feld ID heisst. und zusätzlich stehen datensätze nur in einer spalte (also ein string, statt wie gewoll für jeden datensatz einen einzelnen). das ist ein manko von excel, dass alle zeilen im CSV unformatiert in einer wurst in spalte A eingefügt werden. direkt öffnen via doppelklick geht so nicht, über datei/öffnen wird die CSV richtig eingelesen. es ist vermutlich also eher ein excel-problem; ein direktes öffnen der CSV-datei im editor deiner wahl und kontrolle der ausgabe würde ich aber empfehlen. s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SatansEier Geschrieben 23. März 2006 Autor Teilen Geschrieben 23. März 2006 verwendest du ID als (ersten) spaltennamen? excel hat m.w. probleme mit CSV-dateien, wenn das erste feld ID heisst. nope das war nur ein bespiel zum verständnis. wenn ich im editor ne .csv mit "Vorname; Name; Str.; PLZ;" "Hans; Werner; ; 12345;" "Eugen; Straus; Meinestr. 4; 12345;" zum test erstelle, wird`s richtig ausgewertet, also können tut das excel. (spaltenname mit darunterstehendem datensätz) der fehler für die nun horizontale ausgabe in excel muss im code liegen- fällt dir was auf? das ist ein manko von excel, dass alle zeilen im CSV unformatiert in einer wurst in spalte A eingefügt werden. wär ein assoziativ aray nicht besser damit jeder datensatz separat gespeichert wird? leider mangelt`s mir an der umsetzung ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SatansEier Geschrieben 24. März 2006 Autor Teilen Geschrieben 24. März 2006 danke an euch für die anregungen;) gelöst hab ich das jetzt mit nem eigenen code <? ob_start(); session_start(); include ("config.inc.php"); include ("index.php"); $head=''; $excel=FOPEN("excel.csv", "w"); for($i=0;$i<35;$i++) { $head = $head.$auswahl[$i][anzeige].';'; } FWRITE($excel, $head."\n"); $result=mysql_query($query); for($j=0;$j<mysql_num_rows($result);$j++) { $line=mysql_fetch_assoc($result); $data = ''; for($i=0;$i<35;$i++) { $data = $data.$line[$auswahl[$i][intern]].';'; } FWRITE($excel, $data."\n"); } FCLOSE($excel); header("Location: excel.csv"); ob_end_flush(); ?>[/PHP] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.