Veröffentlicht 22. März 200619 j 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
22. März 200619 j was ist der unterschied zwischen "csv & xls" oder mit welcher funktion speiche ich das query als .csv?
22. März 200619 j 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
22. März 200619 j 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
22. März 200619 j 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
23. März 200619 j 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*
23. März 200619 j 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
23. März 200619 j 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 ^^
24. März 200619 j 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]
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.