好得很程序员自学网

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

php利用PHPExcel类导出导入Excel用法 - php高级应用

php利用PHPExcel类导出导入Excel用法

PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考,PHPExcel自己百度下载这里不介绍了.

导出Excel用法,代码如下:

//设置环境变量(新增PHPExcel)     set_include_path( '.' . PATH_SEPARATOR . Yii::app()->basePath. '/lib/PHPExcel'  . PATH_SEPARATOR .    get_include_path());    //注:在yii中,也可以直接Yii::import([application.lib.PHPExcel.*]);         //引入PHPExcel相关文件     require_once   "PHPExcel.php" ;    require_once   'PHPExcel/IOFactory.php' ;    require_once   'PHPExcel/Writer/Excel5.php' ;     //把要导出的内容放到表格 , 新建          $resultPHPExcel  =  new  PHPExcel();    //设置参数  设值          $resultPHPExcel ->getActiveSheet()->setCellValue( 'A1' ,  '季度' );   $resultPHPExcel ->getActiveSheet()->setCellValue( 'B1' ,  '名称' );   $resultPHPExcel ->getActiveSheet()->setCellValue( 'C1' ,  '数量' );   $i  = 2;  //开源代码phpfensi测试数据   foreach ( $data   as   $item ){   $resultPHPExcel ->getActiveSheet()->setCellValue( 'A'  .  $i ,  $item [ 'quarter' ]);   $resultPHPExcel ->getActiveSheet()->setCellValue( 'B'  .  $i ,  $item [ 'name' ]);   $resultPHPExcel ->getActiveSheet()->setCellValue( 'C'  .  $i ,  $item [ 'number' ]);   $i  ++;   } 

设置导出参数,代码如下:

//设置导出文件名      $outputFileName  =  'total.xls' ;     $xlsWriter  =  new  PHPExcel_Writer_Excel5( $resultPHPExcel );     //ob_start(); ob_flush();      header( "Content-Type: application/force-download" );     header( "Content-Type: application/octet-stream" );     header( "Content-Type: application/download" );     header( 'Content-Disposition:inline;filename="' . $outputFileName . '"' );     header( "Content-Transfer-Encoding: binary" );     header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" );     header( "Last-Modified: "  .  gmdate ( "D, d M Y H:i:s" ) .  " GMT" );     header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );     header( "Pragma: no-cache" );     $xlsWriter ->save(  "php://output"  ); 

输出有错,默认$xlsWriter->save( "php://output" );可能因为缓存不够大,而显示不完整,所以做个中转,代码如下:

$finalFileName  = (Yii::app()->basePath. '/runtime/' .time(). '.xls' ;     $xlsWriter ->save( $finalFileName );     echo   file_get_contents ( $finalFileName );     //file_get_contents() 函数把整个文件读入一个字符串中。和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。  

导入Excel用法,代码如下:

<?php  if ( $_POST [ 'leadExcel' ] ==  "true" )  {       $filename  =  $_FILES [ 'inputExcel' ][ 'name' ];       $tmp_name  =  $_FILES [ 'inputExcel' ][ 'tmp_name' ];       $msg  = uploadFile( $filename , $tmp_name );       echo   $msg ;  }    //导入Excel文件   function  uploadFile( $file , $filetempname )   {       //自己设置的上传文件存放路径        $filePath  =  'upFile/' ;       $str  =  "" ;          //下面的路径按照你PHPExcel的路径来修改        require_once   'PHPExcel/PHPExcel.php' ;       require_once   'PHPExcel/PHPExcel/IOFactory.php' ;       require_once   'PHPExcel/PHPExcel/Reader/Excel5.php' ;         //注意设置时区        $time = date ( "y-m-d-H-i-s" ); //去当前上传的时间         //获取上传文件的扩展名        $extend = strrchr  ( $file , '.' );       //上传后的文件名        $name = $time . $extend ;       $uploadfile = $filePath . $name ; //上传后的文件名地址         //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。        $result =move_uploaded_file( $filetempname , $uploadfile ); //假如上传到当前目录下        //echo $result;        if ( $result )  //如果上传文件成功,就执行导入excel操作       {           include   "conn.php" ;           $objReader  = PHPExcel_IOFactory::createReader( 'Excel5' ); //use excel2007 for 2007 format             $objPHPExcel  =  $objReader ->load( $uploadfile );            $sheet  =  $objPHPExcel ->getSheet(0);            $highestRow  =  $sheet ->getHighestRow();            //取得总行数             $highestColumn  =  $sheet ->getHighestColumn();  //取得总列数                      /* 第一种方法             //循环读取excel文件,读取一条,插入一条           for($j=1;$j<=$highestRow;$j++)                        //从第一行开始读取数据           {                for($k='A';$k<=$highestColumn;$k++)            //从A列读取数据               {                    //                   这种方法简单,但有不妥,以'\'合并为数组,再分割\为字段值插入到数据库                   实测在excel中,如果某单元格的值包含了\导入的数据会为空                           //                   $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\';//读取单元格               }                //echo $str; die();               //explode:函数把字符串分割为数组。               $strs = explode("\",$str);               $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (               '{$strs[0]}',               '{$strs[1]}',               '{$strs[2]}',               '{$strs[3]}',               '{$strs[4]}')";               //die($sql);               if(!mysql_query($sql))               {                   return false;                   echo 'sql语句有误';               }               $str = "";           }             unlink($uploadfile); //删除上传的excel文件           $msg = "导入成功!";           */              /* 第二种方法*/            $objWorksheet  =  $objPHPExcel ->getActiveSheet();           $highestRow  =  $objWorksheet ->getHighestRow();            echo   'highestRow=' . $highestRow ;           echo   "<br>" ;           $highestColumn  =  $objWorksheet ->getHighestColumn();           $highestColumnIndex  = PHPExcel_Cell::columnIndexFromString( $highestColumn ); //总列数            echo   'highestColumnIndex=' . $highestColumnIndex ;           echo   "<br>" ;           $headtitle = array ();            for  ( $row  = 1; $row  <=  $highestRow ; $row ++)           {               $strs = array ();               //注意highestColumnIndex的列数索引从0开始                for  ( $col  = 0; $col  <  $highestColumnIndex ; $col ++)              {                   $strs [ $col ] = $objWorksheet ->getCellByColumnAndRow( $col ,  $row )->getValue();              }                   $sql  = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES (               '{$strs[0]}' ,               '{$strs[1]}' ,               '{$strs[2]}' ,               '{$strs[3]}' ,               '{$strs[4]}' )";               //die($sql);                if (!mysql_query( $sql ))              {                   return  false;                   echo   'sql语句有误' ;              }          }      }       else       {          $msg  =  "导入失败!" ;      }        return   $msg ;  }  ?> 

HTML网页代码,代码如下:

< form   action = "upload.php"   method = "post"   enctype = "multipart/form-data" >        < input   type = "hidden"   name = "leadExcel"   value = "true" >        < table   align = "center"   width = "90%"   border = "0" >        < tr >           < td >            < input   type = "file"   name = "inputExcel" > < input   type = "submit"   value = "导入数据" >           </ td >        </ tr >        </ table >   </ form >  

查看更多关于php利用PHPExcel类导出导入Excel用法 - php高级应用的详细内容...

  阅读:43次