PHP操作csv文件代码详解
在php中读取操作csv文件的方法有很多,最简单的可以直接使用fopen像打开txt文件打开,然后利用explode分开就成了,生成也一样直接使用a,b,c,e保存成csv格式就KO,但php还提供了fputcsv函数对csv文件操作,下面我来介绍介绍.
1.生成CVS,fputcsv()将行格式化为 CSV 并写入文件指针,代码如下:
<?php $list = array( 'aaa,bbb,ccc,dddd', '11,22,33', '"php","java"' ); $fp = fopen('file.csv', 'w'); foreach ($list as $line) { fputcsv($fp, explode(',', $line)); } fclose($fp); ?>
小提示,如果你csv中有中文我们需要注意一下中文问题,否则中文乱码就会和你在一起玩哦,下面给了一个实例解决中文乱码,代码如下:
<?php /** by www.phprm.com */ $row = 1; $handle = fopen("file.csv", "r"); //fgetcsv() 解析读入的行并找出 CSV格式的字段然后返回一个包含这些字段的数组。 while ($data = fgetcsv($handle, 1000, ",")) { $num = count($data); echo "<p> $num fields in line $row: <br>n"; $row++; for ($c = 0; $c < $num; $c++) { //注意中文乱码问题 $data[$c] = iconv("gbk", "utf-8//IGNORE", $data[$c]); echo $data[$c] . "<br>n"; } } fclose($handle); ?>
读取csv文件的某一行数据,代码如下:
<?php function get_file_line($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); ?>
读取csv文件制定行数,行区间,代码如下:
<?php function get_file_line($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; } $aa = get_file_line("windows_2011_s.csv", 11, 20); //从第11行到第20行 foreach ($aa as $bb) { echo $bb . "<br>"; } ?>
文章地址:http://www.phprm.com/develop/fs5270.html
转载随意^^请带上本文地址!