好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php读取excel文件(.csv)实例介绍 - php高级应用

php读取excel文件(.csv)实例介绍

csv文件是一种纯文本文件,但利用excel文件打开可以当作excel文件使用,下面我来总结几个常用的读取excel的php实例.

PHP有自带的分析.csv函数:fgetcsv

array fgetcsv ( int $handle [, int $length [, string $delimiter [, string $enclosure]]] )

handle 一个由 fopen()、popen() 或 fsockopen() 产生的有效文件指针。

length (可选)必须大于 CVS 文件内最长的一行。在 PHP 5 中该参数是可选的。如果忽略(在 PHP 5.0.4 以后的版本中设为 0)该参数的话,那么长度就没有限制,不过可能会影响执行效率。

delimiter (可选)设置字段分界符(只允许一个字符),默认值为逗号。

enclosure (可选)设置字段环绕符(只允许一个字符),默认值为双引号。该参数是在 PHP 4.3.0 中添加的。 和 fgets() 类似,只除了 fgetcsv() 解析读入的行并找出 CSV 格式的字段然后返回一个包含这些字段的数组。

fgetcsv() 出错时返回 FALSE,包括碰到文件结束时。

注意: CSV 文件中的空行将被返回为一个包含有单个 null 字段的数组,不会被当成错误.

例,代码如下:

<?php   $row  = 1;   $handle  =  fopen ( "test.csv" , "r" );   while  ( $data  =  fgetcsv ( $handle , 1000,  "," )) {     $num  =  count ( $data );     echo  "     $num  fields in line  $row :n";     $row ++;     for  ( $c =0;  $c  <  $num ;  $c ++) {     echo   $data [ $c ] .  "n" ;    }   }   fclose( $handle );   ?> 

例2,在百度统计和站长工具使用过程中会涉及到很多csv文件,比如我们下载百度站长工具的404统计数据,直接可以使用以下php脚本来读取csv文件然后更新提交。

php读取excel文件(.csv)参考代码:

<?php    function  getCSVdata( $filename )    {         $row  = 1; //第一行开始          if (( $handle  =  fopen ( $filename ,  "r" )) !== false)         {             while (( $dataSrc  =  fgetcsv ( $handle )) !== false)             {                 $num  =  count ( $dataSrc );                 for  ( $c =0;  $c  <  $num ;  $c ++) //列 column                  {                     if ( $row  === 1) //第一行作为字段                      {                         $dataName [] =  $dataSrc [ $c ]; //字段名称                     }                     else                     {                         foreach  ( $dataName   as   $k => $v )                        {                             if ( $k  ==  $c ) //对应的字段                             {                                 $data [ $v ] =  $dataSrc [ $c ];                            }                        }                    }                }                 if (! empty empty ( $data ))                {                      $dataRtn [] =  $data ;                     unset( $data );                }                 $row ++;            }            fclose( $handle );             return   $dataRtn ;        }    }        $aData  = getCSVdata( 'all_HdhCmsTestphpfensi测试数据 .csv' );      foreach  ( $aData   as   $k => $v  ){  echo   "http://" . $v [ 'a' ]. "<br>" ;  }  ?> 

PHP自定义类

优点: 跨平台,某些类支持写操作,支持.xls二进制文件,常用的类有phpExcelReader、PHPExcel,其中后者支持读写,但是需要php5.2以上版本.

phpExcelReader是专门用来读取文件的,返回一个数组,包含表格的所有内容,该 class 使用的方法可以参考网站下载回来的压缩档中的 example.php.

例3.php数据导入导出之excel

上传cvs并导入到数据库中,测试成功,部分代码不规范,如PHP_SELF那里要改写成:$_SERVER["PHP_SELF"] )

PHP实例代码如下:

<?php  $fname  =  $_FILES [ 'MyFile' ][ 'name' ];  $do  =  copy ( $_FILES [ 'MyFile' ][ 'tmp_name' ], $fname );  if  ( $do )  {  echo "导入数据成功  ";  }  else  {  echo   "" ;  }  ?>  <form ENCTYPE= "multipart/form-data"  ACTION= "<?php echo" ".$PHP_SELF." "; ?>"  METHOD= "POST" >  导入CVS数据 <input NAME= "MyFile"  TYPE= "file" > <input VALUE= "提交"  TYPE= "submit" >    </form>  <?  error_reporting (0);  //导入CSV格式的文件   $connect =mysql_connect( "localhost" , "a0530093319" , "123456" )  or   die ( "could not connect to database" );  mysql_select_db( "a0530093319" , $connect )  or   die  (mysql_error());  $fname  =  $_FILES [ 'MyFile' ][ 'name' ];  $handle = fopen ( "$fname" , "r" );  while ( $data = fgetcsv ( $handle ,10000, "," ))  { //开源代码phpfensi测试数据   $q = "insert into test (code,name,date) values ('$data[0]','$data[1]','$data[2]')" ;  mysql_query( $q )  or   die  (mysql_error());  }  fclose( $handle );  ?> 

用php将数据库导出成excel,测试完全成功,PHP代码如下:

<?php  $DB_Server  = HdhCmsTestphpfensi测试数据; //这里是你的数据连接   $DB_Username  =  "a0530093319" ;  $DB_Password  =  "123456" ;  $DB_DBName  =  "a0530093319" ;  $DB_TBLName  =  "member" ;  $savename  =  date ( "YmjHis" );  $Connect  = @mysql_connect( $DB_Server ,  $DB_Username ,  $DB_Password )  or   die ( "Couldn't connect." );  mysql_query( "Set Names 'gb2312'" );  $file_type  =  "vnd.ms-excel" ;  $file_ending  =  "xls" ;  header( "Content-Type: application/$file_type" );  header( "Content-Disposition: attachment; filename=" . $savename . ".$file_ending" );  header( "Pragma: no-cache" );  header( "Expires: 0" );  $now_date  =  date ( "Y-m-j H:i:s" );  $title  =  "数据库名:$DB_DBName,数据表:$DB_TBLName,备份日期:$now_date" ;  $sql  =  "Select * from $DB_TBLName" ;  $ALT_Db  = @mysql_select_db( $DB_DBName ,  $Connect )  or   die ( "Couldn't select database" );  $result  = @mysql_query( $sql , $Connect )  or   die (mysql_error());  echo ( "$title " );  $sep  =  " " ;  for  ( $i  = 0;  $i  < mysql_num_fields( $result );  $i ++) {  echo  mysql_field_name( $result , $i ) .  " " ;  }  print( " " );  $i  = 0;  while ( $row  = mysql_fetch_row( $result )) {  $schema_insert  =  "" ;  for ( $j =0;  $j <mysql_num_fields( $result ); $j ++) {  if (!isset( $row [ $j ]))  $schema_insert  .=  "NULL" . $sep ;  elseif  ( $row [ $j ] !=  "" )  $schema_insert  .=  "$row[$j]" . $sep ;  else   $schema_insert  .=  "" . $sep ;  }  $schema_insert  =  str_replace ( $sep . "$" ,  "" ,  $schema_insert );  $schema_insert  .=  " " ;  print(trim( $schema_insert ));  print  " " ;  $i ++;  }  return  (true);  ?> 

查看更多关于php读取excel文件(.csv)实例介绍 - php高级应用的详细内容...

  阅读:41次