2013-07-03 41 views
11

Tôi đang tạo tệp CSV bằng php. Tôi cần phải in các văn bản phù hợp mới bên trong một tế bào (tôi có thể làm điều này trong excel sử dụng Ctrl +Nhập hay Alt +Nhập). Đối với điều đó tôi đã thử sử dụng '\n', '\r', nhưng không có gì hữu ích. Làm thế nào tôi có thể đạt được điều này?in một dòng mới trong ô tệp csv

Tôi đang sử dụng tiện ích mở rộng yii ECSVExport để tạo csv.

Tôi muốn một đầu ra như thế này:

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

Bạn đã thử với định nghĩa PHP_EOL chưa? – roptch

Trả lời

11

Hãy thử điều này

"\n" 

bên trong dấu nháy kép

+0

Không. Kết quả là 'Phần Lan: 03/07/2013 "\ n" Ireland: 03/07/2013 "\ n" Đan Mạch: 03/07/2013' – Khaleel

+2

Ông có nghĩa là dấu ngoặc kép xung quanh toàn bộ chuỗi, thay vì trích dẫn đơn giản . – roptch

14

Sử dụng "\n" bên trong giá trị của ô (bọc trong ") và "\r\n" cho cuối cùng của bạn - ghi điểm đánh dấu. Nếu nhập di động của bạn bao gồm nhiều dòng, sau đó bạn phải kèm theo nó trong "

$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); 

hoặc (làm việc với các biến)

$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); 

hay (sử dụng 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); 

hoặc (sử dụng fputcsv() và làm việc với các biến)

$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

Tôi tin rằng điều này là cho một kết thúc của dòng và không phải là dòng trở lại yêu cầu "bên trong một tế bào chính nó" trong Excel –

+0

@Laurence - có bạn thực sự cố gắng để xem nếu nó hoạt động hay không trước khi downvoting? –

+1

Có Tôi có cùng một vấn đề, đã thử tất cả các loại. "\ n" thêm một dòng mới ở cuối dòng cho tôi (để bắt đầu một dòng mới trong excel) không phải là một dòng mới trong chính các giá trị ô. Vì vậy, chúng tôi không muốn một hàng nhưng một dòng trong tế bào phá vỡ khi mở csv trong excel hoặc số. Có thể nó không hoạt động như tôi đang sử dụng Mac và sử dụng Numbers. –

Các vấn đề liên quan