1.读取csv数据, 输出到sales.csv文件中:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$sales = array ( array ( 'Northeast' , '2004-01-01' , '2004-02-01' , 12.54), array ( 'Northwest' , '2004-01-01' , '2004-02-01' , 546.33), array ( 'Southeast' , '2004-01-01' , '2004-02-01' , 93.26), array ( 'Southwest' , '2004-01-01' , '2004-02-01' , 945.21), array ( 'All Regions' , '---' , '--' , 1597.34), ); $fh = fopen ( 'sales.csv' , 'w' ) or die ( "Can't open sales.csv" ); foreach ( $sales as $sales_line ){ if ( fputcsv ( $fh , $sales_line ) === false){ die ( "Can't write CSV line" ); } } fclose( $fh ) or die ( "Can't close sales.csv" ); |
2. 读取csv数据, 使用特殊的流输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
$sales = array ( array ( 'Northeast' , '2004-01-01' , '2004-02-01' , 12.54), array ( 'Northwest' , '2004-01-01' , '2004-02-01' , 546.33), array ( 'Southeast' , '2004-01-01' , '2004-02-01' , 93.26), array ( 'Southwest' , '2004-01-01' , '2004-02-01' , 945.21), array ( 'All Regions' , '---' , '--' , 1597.34), ); $fh = fopen ( 'php://output' , 'w' ); foreach ( $sales as $sales_line ){ if ( fputcsv ( $fh , $sales_line ) === false){ die ( "Can't write CSV line" ); } } fclose( $fh ); |
3. 读取csv数据, 输出到缓冲中
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
$sales = array ( array ( 'Northeast' , '2004-01-01' , '2004-02-01' , 12.54), array ( 'Northwest' , '2004-01-01' , '2004-02-01' , 546.33), array ( 'Southeast' , '2004-01-01' , '2004-02-01' , 93.26), array ( 'Southwest' , '2004-01-01' , '2004-02-01' , 945.21), array ( 'All Regions' , '---' , '--' , 1597.34), ); ob_start(); $fh = fopen ( 'php://output' , 'w' ) or die ( "Can't open php://output" ); foreach ( $sales as $sales_line ){ if ( fputcsv ( $fh , $sales_line ) === false){ die ( "Can't write CSV line" ); } } fclose( $fh ) or die ( "Can't close php://output" ); $output = ob_get_contents(); ob_end_clean(); |
4. 读取csv文件的数据
1
2
3
4
5
6
7
8
9
10
11
12
|
$fp = fopen ( 'sample3.csv' , 'r' ) or die ( "can't open file" ); print "<table>\n" ; while ( $csv_line = fgetcsv ( $fp )){ print '<tr>' ; for ( $i =0, $j = count ( $csv_line ); $i < $j ; $i ++){ // print '<td>'.htmlentities($csv_line[$i]).'</td>'; print '<td>' .htmlentities(iconv( "gb2312" , "utf-8" , $csv_line [ $i ])). '</td>' ; } print "</tr>\n" ; } print "</table>\n" ; fclose( $fp ) or die ( "can't close file" ); |
5. 下载CSV文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
$sales = array ( array ( 'Northeast' , '2004-01-01' , '2004-02-01' , 12.54), array ( 'Northwest' , '2004-01-01' , '2004-02-01' , 546.33), array ( 'Southeast' , '2004-01-01' , '2004-02-01' , 93.26), array ( 'Southwest' , '2004-01-01' , '2004-02-01' , 945.21), array ( '中国' , '2004-01-01' , '2004-02-01' , 945.21), ); $fh = fopen ( 'php://output' , 'w' ) or die ( "can't open php://output" ); $total = 0; // 告诉浏览器发送的是一个csv文件 header( 'Content-Type: application/csv' ); header( 'Content-Disposition: attachment; filename="sales.csv"' ); // 输出表头 fputcsv ( $output , array ( 'Region' , 'Start Date' , 'End Date' , 'Amount' )); // 输出每一行数据, 并递增$total foreach ( $sales as $sales_line ){ if ( fputcsv ( $fh , $sales_line ) === false){ die ( "Can't write CSV line" ); } else { $total += $sales_line [3]; } } fputcsv ( $fh , array ( 'All Regions' , '--' , '--' , $total )); fclose( $fh ) or die ( "Can't close php://output" ); |
6.读取CSV文件指定行和区间行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
/*****读取CSV文件中的指定行*****/ function get_file_line_a( $file_name , $line ){ $n = 0; $handle = fopen ( $file_name , 'r' ); if ( $handle ) { while (! feof ( $handle )) { ++ $n ; $out = fgets ( $handle , 4096); if ( $line == $n ) break ; } fclose( $handle ); } if ( $line == $n ) return $out ; return false; } echo get_file_line( "windows_2011_s.csv" , 10); //输入第10行内容 /*****读取CSV文件中的区间行*****/ function get_file_line_b( $file_name , $line_star , $line_end ){ $n = 0; $handle = fopen ( $file_name , "r" ); if ( $handle ) { while (! feof ( $handle )) { ++ $n ; $out = fgets ( $handle , 4096); if ( $line_star <= $n ){ $ling [] = $out ; } if ( $line_end == $n ) break ; } fclose( $handle ); } if ( $line_end == $n ) return $ling ; return false; } //用 get_file_line读取并输出第11行到第20行 $aa = get_file_line( "windows_2011_s.csv" , 11, 20); //从第11行到第20行 foreach ( $aa as $bb ){ echo $bb . "<br>" ; } |