PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PHP] Automatisch generierte CSV-Datei und IE


Kinman
2008-02-14, 09:02:30
Hi, ich habe folgendes Problem mit dem IE. Ich will eine CSV Datei downloaden, die automatisch generiert wird. Um die Datei als CSV auszugeben mache ich folgendes


header('Content-Type: text/x-csv');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename=download.csv');
header('Pragma: no-cache');


Nur das habe ich auch erfolglos probiert

header('Content-Type: text/x-csv');


ebenso

header('Content-Disposition: attachment; filename=download.csv');


Im Opera funktionierts einwandfrei. Der IE schreibt mir, dass er die Datei nicht downloaden kann. Wenn ich das jedoch weglasse, so wird die PHP Datei korrekt angezeigt.
Woran Könnte es liegen?

The_Invisible
2008-02-14, 16:23:11
bei mir gehts mit dem hier zb eine xml datei ausliefern:


header('Content-Description: File Transfer');
header('Content-Type: application/force-download');
header('Content-Disposition: attachment; filename=' . $filename . ".xml");


mfg

Coda
2008-02-15, 02:33:41
HTTPS?

Kinman
2008-02-15, 08:06:03
@The_Invisible: Danke, werde ich heute probieren
@Coda: Nein, HTTP

mfg Kinman

The_Invisible
2008-02-15, 08:41:57
meine headeranweisungen funktionieren auch unter https ;)

mfg

Kinman
2008-02-15, 08:46:56
Leider klappts so auch nicht :(
Opera kann, Safari kanns, FireFox kanns, IE6 + 7 könnens nicht

Im Anhang die Fehlermeldung

mfg Kinman

EDIT: Der IE kanns aufgrund der Weiterleitung nicht... Naja, dann werd ichs wohl anders lösen

Coda
2008-02-15, 15:38:27
@Coda: Nein, HTTP
Probier trotzdem mal vor allen anderen

header("Pragma: public\n");

mapel110
2008-06-01, 23:24:19
ehm, wie läuft das Exportieren genau ab?

Ich hab den Header und unter dem Header muss ich dann nochmal alle Inhalte reinkopieren, die in der Datei gespeichert werden sollen?

btw ich hab CSS-Ebenen für meine Ergebnisse angelegt. Wie bekomm ich die komplett in eine Session-Variable inkl. Inhalt? (Das brauche ich ja wohl, um sie auch in der zu exportierenden Exceldatei verfügbar zu haben unter dem Header.)

Berni
2008-06-02, 01:03:01
Edit: Ok hab gesehen dass der Thread ja schon alt ist und das Problem wohl mittlerweile behoben ;)

@mapel110: Du kannst mit readfile() die Datei direkt ausgeben! Also einfach nach allen Headern noch diesen readfile-Befehl und die Datei wird ausgegeben. Natürlich macht das nur Sinn, wenn man die Datei irgendwie schützen möchte; sonst ist es eigtl. besser, den Link entsprechend zu setzen oder per header eine Redirection zu machen (header('Location: http://www.xy.de/datei.csv');).

Kinman
2008-06-02, 09:33:14
Ich hab das am Anfang drin stehen und leite die Datei nicht weiter, sondern sie muss mittels klick auf einen Link geöffnet werden:


header('Content-Type: text/x-csv');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename=download.csv');
header('Pragma: no-cache');


mfg Kinman

mapel110
2008-06-02, 09:51:52
:ucrazy4:
Nochmal für ganz Dumme (wie mich)

Meine Ausgabe-PHP-File:
<table id="bla"><tr><td>Blubb</td></tr></table>
<a href="Excel_export.php">Exportieren als Excel-Formular</a><br>

Meine Excel_export.php-File
<?
session_start();
header("Content-type: application/vnd-ms-excel");
header("Content-Disposition: attachment; filename=export.xls");
?>
-------------------------------------------------------------------
So siehts bei mir aus. Wie bekomme ich jetzt den Inhalt von Ausgabe-PHP-File in die Excel-export?

Ginge zum Beispiel $ausgabe_tabelle1="<table id="bla"><tr><td>Blubb</td></tr></table>";
und dann eben $_SESSION[ausgabe]=$ausgabe_tabelle1
und dann unter dem Header der Excel_export halt noch
echo $_SESSION[ausgabe];

:confused:

Kinman
2008-06-02, 12:22:11
Öhhmm.. CSV Dateien haben keine Auszeichnungssprache...

Du kannst natürlich ganz normal mit PHP arbeiten (Sessions, Datenbank, etc.) allerdings gibts Du dann keinen HTML Code sondern eben CSV "Code" aus.

Also sieht das z.B. so aus


...
for ($i = 1; $i <= 10; $i++)
{
echo('Zeile ' . $i . ";2. Spalte;3. Spalte\n");
}


mfg Kinman

mapel110
2008-06-02, 12:31:32
Excel kann HTML. Deswegen wollt ich das so simpel machen. Hätt ich also quasi auch gleich nen bissl Layout mit dabei.

Kinman
2008-06-02, 12:37:02
OK, das wusste ich nicht...
Jedenfalls ist es dann allerdings keine CSV Datei mehr.

mfg Kinman