Avatar billede jenslyn_s Nybegynder
27. marts 2006 - 12:42 Der er 9 kommentarer og
1 løsning

Generere CSV fil

Argh, hvordan skriver jeg en CSV-fil med ;-separation som virker ? :-/
Bruger følgende:
$fp = fopen(("minfil.csv"), 'wb');
$linie1 = 'falf;flaf;flaf';
$linie2 = 'falf;flaf;flaf';
fwrite($fp, $linie1.'\r\n'); // linie 1
fwrite($fp, $linie2.'\r\n'); // linie 2
fclose($fp);

Men lortet virker ikke. Den registrerer ikke linebreaksene :-/ Kan jeg ikke gøre så at den blot åbner dokumentet i excel når ovenstående script kaldes?
Avatar billede michael_stim Ekspert
27. marts 2006 - 12:45 #1
$fp = fopen(("minfil.csv"), 'wb');
$linie1 = 'falf;flaf;flaf\r\n';
$linie2 = 'falf;flaf;flaf\r\n';
fwrite($fp, $linie1); // linie 1
fwrite($fp, $linie2); // linie 2
fclose($fp);
Avatar billede jenslyn_s Nybegynder
27. marts 2006 - 12:59 #2
Den reagerer ikke på \r\n - forstår det ikke....
Avatar billede michael_stim Ekspert
27. marts 2006 - 13:29 #3
$fp = fopen(("minfil.csv"), 'wb');
$linie1="";
$linie1 .= 'falf;flaf;flaf\r\n';
$linie1 .= 'falf;flaf;flaf\r\n';
fwrite($fp, $linie1); // linie 1
fclose($fp);
Avatar billede gf Nybegynder
27. marts 2006 - 13:32 #4
Hej

Jeg gør således, når jeg vil have data fra en db ud i en csv fil:
<?php
include("mysql.php");
$q = "SELECT * FROM din database";
$r = mysql_query($q);$out = '';
while ($l = mysql_fetch_row($r)) {
    $out .= '' . implode (';',$l) . "\n";
}
$f = fopen ('dinfil.csv','w');
fputs ($f, $out);
fclose ($f);
?>
mvh gf
Avatar billede coderdk Praktikant
27. marts 2006 - 13:35 #5
'wb' = write binary - bare brug 'w'

Du bruger:

fwrite($fp, $linie1.'\r\n');

Men bør det ikke være:

fwrite($fp, $linie1."\r\n");
Avatar billede coderdk Praktikant
27. marts 2006 - 13:35 #6
Altså gåseøjne, ikke apostrof.
Avatar billede jenslyn_s Nybegynder
27. marts 2006 - 13:56 #7
Ahh, ja. Gåseøjne rocks! Men nu ved jeg det, og må huske det til en anden gang :-) tak. smid et svar.

btw.: Hvad kan jeg gøre for at 'åbne' filen automatisk? - altså generer filen og åbn med foretrukne program...
Avatar billede michael_stim Ekspert
27. marts 2006 - 14:02 #8
Det kan du ikke med CSV. Det er noget du gør på den lokale computer. Hvis det er til Excel kan du gemme filen som .xls (tror jeg)
Avatar billede coderdk Praktikant
27. marts 2006 - 14:06 #9
Du kan associere .csv med et program på din egen computer...
Evt. registrere en mime type som text/csv eller text/comma-separated-values - Men det er noget der skal gøres på webserveren.
Du kan også downloade CSV'en gennem et php-script, så kan du selv sætte de headere.
Avatar billede whatever Nybegynder
27. marts 2006 - 18:34 #10
Hvis du ønsker det, kan du få en gem/åben dialogboks op når filen er genereret. Så kan brugeren vælge at gemme eller åbne filen.

Du kunne f.eks. skrive følgende efter koden der genererer filen:

$buffer = file_get_contents("minfil.csv");
header("Content-Type: text/x-csv");
header("Content-Disposition: inline; filename=minfil.csv");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: private");
echo stripslashes($buffer);
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester