2013-07-03 16 views
11

Generuję plik CSV w php. Muszę wydrukować tekst w nowej linii wewnątrz komórki (można to zrobić w programie Excel przy użyciu Ctrl + Wprowadź lub alt + Wprowadź). Do tego próbowałem używać '\n', '\r', ale nic nie pomogło. Jak mogę to osiągnąć?drukowanie nowej linii w komórce pliku CSV

Używam rozszerzenia yii ECSVExport do generowania pliku CSV.

Chcę wyjście tak:

ID Value 
1 A 
    B 
2 C 
3 E 
    FF 
    G 
4 X 
+0

Czy próbowałeś już zdefiniować PHP_EOL? – roptch

Odpowiedz

11

Spróbuj

"\n" 

wewnątrz podwójny cudzysłów

+0

Nie. Wynik to 'Finlandia: 03/07/2013" \ n "Irlandia: 03/07/2013" \ n "Dania: 03/07/2013' – Khaleel

+2

Miał na myśli podwójny cudzysłów w całym ciągu, zamiast prostych cytatów . – roptch

14

Zastosowanie "\n" wewnątrz wartości komórek (zawinięte w ") i "\r\n" do końca znacznik rekordu. Jeśli Twój wpis komórka zawierać wiele wierszy, to musi ująć ją w "

$fh = fopen('test1.csv', 'w+'); 
fwrite($fh, "sep=\t" . "\r\n"); 
fwrite($fh, 'A' ."\t" . 'B' . "\t" . 'C' . "\r\n"); 
fwrite($fh, 'D' ."\t" . "\"E\nF\nG\"" . "\t" . 'H' . "\r\n"); 
fclose($fh); 

lub (praca ze zmiennymi)

$varA = 'A'; 
$varB = 'B'; 
$varC = 'C'; 
$varD = 'D'; 
$varE = 'E'; 
$varF = 'F'; 
$varG = 'G'; 
$varH = 'H'; 
$fh = fopen('test2.csv', 'w+'); 
fwrite($fh, "sep=\t"."\r\n"); 
fwrite($fh, $varA . "\t" . $varB . "\t" . $varC . "\r\n"); 
fwrite($fh, $varD . "\t" . "\"$varE\n$varF\n$varG\"" . "\t" . $varH . "\r\n"); 
fclose($fh); 

lub (używając fputcsv())

$fh = fopen('test3.csv', 'w+'); 
fwrite($fh, "sep=\t" . "\r\n"); 
fputcsv($fh, array('A', 'B', 'C'), "\t"); 
fputcsv($fh, array('D', "E\nF\nG", 'H'), "\t"); 
fclose($fh); 

lub (używając fputcsv() i pracy ze zmiennymi)

$varA = 'A'; 
$varB = 'B'; 
$varC = 'C'; 
$varD = 'D'; 
$varE = 'E'; 
$varF = 'F'; 
$varG = 'G'; 
$varH = 'H'; 
$fh = fopen('test4.csv', 'w+'); 
fwrite($fh, "sep=\t" . "\r\n"); 
fputcsv($fh, array($varA, $varB, $varC), "\t"); 
fputcsv($fh, array($varD, "$varE\n$varF\n$varG", $varH), "\t"); 
fclose($fh); 
+0

Uważam, że jest to koniec linii, a nie wymagany zwrot linii "wewnątrz samej komórki" w Excelu –

+0

@ Laurence - czy rzeczywiście próbowałeś sprawdzić, czy działa, czy nie, przed wprowadzeniem w dół? –

+1

Tak, mam ten sam problem, próbowałem wszystkich rodzajów. "\ n" dodaje dla mnie nową linię na końcu wiersza (rozpoczyna nowy wiersz w programie Excel), a nie nową linię w obrębie samych wartości komórki. Więc nie chcemy wiersza, ale przerwy w linii w trakcie otwierania pliku CSV w Excelu lub liczbach. Może to nie działa tak jak ja na Macu i używając Numbers. –

Powiązane problemy