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高级应用的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did30516