好得很程序员自学网

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

PHP导入导出Excel文件的方法 - php高级应用

PHP导入导出Excel文件的方法

下面我来给大家介绍在php中操作excel两个实例,一个是利用PHP-ExcelReader导入excel并输出,另一种是直接输入excel并导出,下面看实例。

借助PHP-ExcelReader这个开源类,我们可以轻松地导入Excel文件数据,示例代码如下:

PHP-ExcelReader下载地址:http://sourceforge.net/projects/phpexcelreader/

<?php   require_once   'Excel/reader.php' ;   $data  =  new  Spreadsheet_Excel_Reader();   $data ->setOutputEncoding( 'gbk' );   $data ->read( 'test.xls' );   for  ( $i  = 1;  $i  <=  $data ->sheets[0][ 'numRows' ];  $i ++) {        for  ( $j  = 1;  $j  <=  $data ->sheets[0][ 'numCols' ];  $j ++) {            echo   "" ".$data->sheets[0]['cells'][$i][$j]." "," ;       }        echo   "n" ;   }   ?> 

例.phpexcel导到excel, 1.test.php, 代码如下:

require_once   'reader.php' ;  // ExcelFile($filename, $encoding);   $data  =  new  Spreadsheet_Excel_Reader();  // Set output Encoding.   $data ->setOutputEncoding( 'gbk' );  //]data.xls]是指要导入到mysql中的excel文件   $data ->read( 'data.xls' );  @  $db  = mysql_connect( 'localhost' ,  'root' ,  '123456' )  or            die ( "Could not connect to database." ); //连接数据库   mysql_query( "set names 'gbk'" ); //输出中文   mysql_select_db( 'mydb' );        //选择数据库   error_reporting (E_ALL ^ E_NOTICE);  for  ( $i  = 1;  $i  <=  $data ->sheets[0][ 'numRows' ];  $i ++) {  //以下注释的for循环打印excel表数据   /*   for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) {               echo """.$data->sheets[0]['cells'][$i][$j]."",";              }              echo "n";    //PHP开源代码     */   //以下代码是将excel表数据【3个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧!        $sql  =  "INSERT INTO test VALUES('" .                  $data ->sheets[0][ 'cells' ][ $i ][1]. "','" .                    $data ->sheets[0][ 'cells' ][ $i ][2]. "','" .                    $data ->sheets[0][ 'cells' ][ $i ][3]. "')" ;       echo   $sql .'  ';          $res  = mysql_query( $sql );  }  ?> 

例.导出excel文件

比如我需要一个做php导出 excel的的程序,只需要把相关的数据导出到excel表就可以了,这么简单的操作就不需要用那些类库什么的了,直接用header的方式就可以了:header("Content-type:application/vnd.ms-excel");

看看如下代码如下:

<?php   header( "Content-type:application/vnd.ms-excel" );   header( "Content-Disposition:attachment;filename=Export_test.xls" );   $tab = "t" ;  $br = "n" ;  $head = "编号" . $tab . "备注" . $br ;  //输出内容如下:     echo   $head . $br ;  echo    "test321318312" . $tab ;    echo    "string1" ;   echo    $br ;  echo    "330181199006061234" . $tab ;   //直接输出会被Excel识别为数字类型   echo    "number" ;   echo    $br ;  echo    "=" 330181199006061234 "" . $tab ;   //原样输出需要处理   echo    "string2" ;   echo    $br ;  ?> 

在导出后会发现一个问题,如果数据是数字会出现一些意想不到的情况,比如,"012345",在excel中会变成"12345";如果输入身份证号码这样的长数字,在excel中会用科学计数法表示出来,并且最后的四位数字会出现偏差,变位0000等情况,这就需要把单元格设置为文本格式,方法是

echo "="330181199006061234""如果程序是utf-8编码的,还需要用iconv函数去转码,不然是会乱码的,乱码的。

另word格式导入类似,指定header就可以了,代码如下:

header( "Content-Type:   application/msword" );          header( "Content-Disposition:attachment;filename=doc.doc" ); 

查看更多关于PHP导入导出Excel文件的方法 - php高级应用的详细内容...

  阅读:54次