MySQL > Excel

rtd1978

Mitglied
hallo,

habe mir natürlich hier erstmal einige threads angeschaut, bevor ich poste. jedoch das ganze bei mir nicht wirklich.

zum problem:
ich habe daten mittels einer select-anweisung aus der db abgefragt.
nun sollen diese daten in eine excel-tabelle.

versucht habe ich das über csv. habe aber probleme mit den "header-angaben". excel zeigt mir dann den code meiner php-seite an.

kann mir irgendjemand bei der lösung helfen?

gruß, rtd1978
 
jo, hab ich auch schon probiert.

allerdings wird die gesamt csv-datei im excel in einer spalte angezeigt. die ";" haben also keine wirkung.

ich möchte, dass sich excel öffnet und die tabelle angezeigt wird, so wie ich sie per csv definiert habe.

wenn ich die csv direkt im excel öffne wird die tabelle ordnungsgemäß angezeigt.


vorschläge?
 
Zitat aus dem Link:
Stattdessen kann man aber Textdateien erzeugen, deren Werte (Spalten) mit Tabulatoren und deren Zeilen mit CRLF (\r\n) getrennt sind, und diese Excel als .xls-Datei "unterschieben". Wichtig ist hierbei, als Dateityp tatsächlich eine Excel-(.xls)-Datei zu deklarieren - obwohl Excel diverse Importformate wie .csv (comma separated value) kennt, funktioniert es damit, vermutlich mangels definiertem Content-Type, nicht wie gewünscht.
Also: Kein Komma, sondern einen Tab (\t) nehmen!

Gruß hpvw
 
Code:
	header("Content-Type: application/vnd.ms-excel"); 
	header("Content-Disposition: attachment; filename=\"dateiname.csv\""); 
	
			include ("inc/conn.inc.php");
			//sql wird übergeben
			$sql=str_replace("\\","",$sql);
			$sql=str_replace("\'","'",$sql);
			$result = mysql_query ($sql,$db);
			$numerg = mysql_num_rows($result);

			//ausgabe für datei!
			echo("\n\n");
			echo("MA $user $datum_ext \n\n\n");
			echo("Kunden Nr.;Kunde;Datum;Produkt / Einheit;Menge;Preis / €;G.-Summe / €;Skonti\n");
			  	
				while ($numerg > $i)
				{
				$id_up=mysql_result($result,$i,"id"); 
				$akdnr=mysql_result($result,$i,"akdnr"); 
				$apo=mysql_result($result,$i,"apo");
				$datum=mysql_result($result,$i,"datum");
				$produkt=mysql_result($result,$i,"produkt");
				$menge=mysql_result($result,$i,"menge");
				$preis=mysql_result($result,$i,"preis");
				$skonti=mysql_result($result,$i,"skonti");
				
				//berechnungen
				$gsumme = $menge * $preis;
				$gsumme_format = number_format($gsumme,2,',','.');
				$preis_format = number_format($preis,2,',','.');
				$summe = $summe + $preis*$menge;

				
				echo "$akdnr;$apo;$datum;$produkt;$menge;$preis_format;$gsumme_format;$skonti\n"; 
				$i++;
				}
			echo(";;;;;Summe:;$summe;");

Hier mal ein Bsp.
 
also an der verwendung von tabulatoren liegt es nicht. die komplette csv datei wird immer noch in der ersten spalte angezeigt.

wie ich die csv erstelle weiss ich schon.

mir fehlt die "funktion" mit der ich excel anweise die übergebene datei auch als csv auszuwerten. wie gesagt, wenn ich die csv händisch lade, klappt es.
 
ahhsoo.... normaler weisse musst du sie einmal von hand laden, trennzeichen angeben usw.

und wenn du dann eine vom server erstellen lässt und sagst öffnen, müsste er das machen

und genau das flupt bei dir nicht oder wie?
 
Hast Du den Link gelesen?
EXCEL KANN KEINE CSV AUS DEM BROWSER HERAUS ÖFFNEN!
Deswegen sollst Du auch keine CSV erstellen, sondern die angegebenen Steuerzeichen verwenden.
Folgendes funktioniert mit IE6 und FF1 i.V.m. Excel 2003:
PHP:
<?php
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: inline; filename=\"excel.xls\"");
echo "Spalte 1 Zeile 1\tSpalte2 Zeile 1\r\n";
echo "Spalte 1 Zeile 2\tSpalte2 Zeile 2\r\n";
?>
 
@hpvw
habe den Link nicht gelesen, aber das soll nicht gehn? Bei meinem Office XP flupt dad wunderbar *freu*
 
Zurück