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>" ;
}
|