在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
-
- $row = 1;
- $handle = fopen("file.csv","r");
-
- 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);
- foreach ($aa as $bb){
- echo $bb."<br>";
- }
- ?>
|