当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2014-08-28 09:44:45 浏览: 评论:0 

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

导出Excel用法,代码如下:

  1. //设置环境变量(新增PHPExcel) 
  2.  
  3. set_include_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . 
  4.  
  5. get_include_path());   
  6. //注:在yii中,也可以直接Yii::import(“application.lib.PHPExcel.*”);   
  7.    
  8. //引入PHPExcel相关文件   
  9. require_once "PHPExcel.php";   
  10. require_once 'PHPExcel/IOFactory.php';   
  11. require_once 'PHPExcel/Writer/Excel5.php';  
  12.  
  13. //把要导出的内容放到表格,新建    
  14.  
  15. $resultPHPExcel = new PHPExcel(); 
  16.  
  17. //设置参数 设值    
  18.  
  19. $resultPHPExcel->getActiveSheet()->setCellValue('A1''季度');  
  20. $resultPHPExcel->getActiveSheet()->setCellValue('B1''名称');  
  21. $resultPHPExcel->getActiveSheet()->setCellValue('C1''数量');  
  22. $i = 2; //开源代码phpfensi.com 
  23. foreach($data as $item){  
  24. $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i$item['quarter']);  
  25. $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i$item['name']);  
  26. $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i$item['number']);  
  27. $i ++;  

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

  1. //设置导出文件名  
  2.  
  3. $outputFileName = 'total.xls';  
  4.  
  5. $xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);  
  6.  
  7. //ob_start(); ob_flush();  
  8.  
  9. header("Content-Type: application/force-download");  
  10.  
  11. header("Content-Type: application/octet-stream");  
  12.  
  13. header("Content-Type: application/download");  
  14.  
  15. header('Content-Disposition:inline;filename="'.$outputFileName.'"');  
  16.  
  17. header("Content-Transfer-Encoding: binary");  
  18.  
  19. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
  20.  
  21. header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");  
  22.  
  23. header("Cache-Control: must-revalidate, post-check=0, pre-check=0");  
  24.  
  25. header("Pragma: no-cache");  
  26.  
  27. $xlsWriter->save( "php://output" ); 

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

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

导入Excel用法,代码如下:

  1. <?php 
  2. if($_POST['leadExcel'] == "true"
  3.     $filename = $_FILES['inputExcel']['name']; 
  4.     $tmp_name = $_FILES['inputExcel']['tmp_name']; 
  5.     $msg = uploadFile($filename,$tmp_name); 
  6.     echo $msg
  7.  
  8. //导入Excel文件 
  9. function uploadFile($file,$filetempname)  
  10.     //自己设置的上传文件存放路径 
  11.     $filePath = 'upFile/'
  12.     $str = "";    
  13.     //下面的路径按照你PHPExcel的路径来修改 
  14.     require_once '../PHPExcel/PHPExcel.php'
  15.     require_once '../PHPExcel/PHPExcel/IOFactory.php'
  16.     require_once '../PHPExcel/PHPExcel/Reader/Excel5.php'
  17.  
  18.     //注意设置时区 
  19.     $time=date("y-m-d-H-i-s");//去当前上传的时间  
  20.     //获取上传文件的扩展名 
  21.     $extend=strrchr ($file,'.'); 
  22.     //上传后的文件名 
  23.     $name=$time.$extend
  24.     $uploadfile=$filePath.$name;//上传后的文件名地址  
  25.     //move_uploaded_file() 函数将上传的文件移动到新位置。若成功,则返回 true,否则返回 false。 
  26.     $result=move_uploaded_file($filetempname,$uploadfile);//假如上传到当前目录下 
  27.     //echo $result; 
  28.     if($result//如果上传文件成功,就执行导入excel操作 
  29.     { 
  30.         include "conn.php"
  31.         $objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format  
  32.         $objPHPExcel = $objReader->load($uploadfile);  
  33.         $sheet = $objPHPExcel->getSheet(0);  
  34.         $highestRow = $sheet->getHighestRow();           //取得总行数  
  35.         $highestColumn = $sheet->getHighestColumn(); //取得总列数 
  36.          
  37.         /* 第一种方法 
  38.  
  39.         //循环读取excel文件,读取一条,插入一条 
  40.         for($j=1;$j<=$highestRow;$j++)                        //从第一行开始读取数据 
  41.         {  
  42.             for($k='A';$k<=$highestColumn;$k++)            //从A列读取数据 
  43.             {  
  44.                 // 
  45.                 这种方法简单,但有不妥,以'\'合并为数组,再分割\为字段值插入到数据库 
  46.                 实测在excel中,如果某单元格的值包含了\导入的数据会为空         
  47.                 // 
  48.                 $str .=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().'\';//读取单元格 
  49.             }  
  50.             //echo $str; die(); 
  51.             //explode:函数把字符串分割为数组。 
  52.             $strs = explode("\",$str); 
  53.             $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES ( 
  54.             '{$strs[0]}', 
  55.             '{$strs[1]}', 
  56.             '{$strs[2]}', 
  57.             '{$strs[3]}', 
  58.             '{$strs[4]}')"; 
  59.             //die($sql); 
  60.             if(!mysql_query($sql)) 
  61.             { 
  62.                 return false; 
  63.                 echo 'sql语句有误'; 
  64.             } 
  65.             $str = ""; 
  66.         }   
  67.         unlink($uploadfile); //删除上传的excel文件 
  68.         $msg = "导入成功!"; 
  69.         */ 
  70.  
  71.         /* 第二种方法*/ 
  72.         $objWorksheet = $objPHPExcel->getActiveSheet(); 
  73.         $highestRow = $objWorksheet->getHighestRow();  
  74.         echo 'highestRow='.$highestRow
  75.         echo "<br>"
  76.         $highestColumn = $objWorksheet->getHighestColumn(); 
  77.         $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数 
  78.         echo 'highestColumnIndex='.$highestColumnIndex
  79.         echo "<br>"
  80.         $headtitle=array();  
  81.         for ($row = 1;$row <= $highestRow;$row++)  
  82.         { 
  83.             $strs=array(); 
  84.             //注意highestColumnIndex的列数索引从0开始 
  85.             for ($col = 0;$col < $highestColumnIndex;$col++) 
  86.             { 
  87.                 $strs[$col] =$objWorksheet->getCellByColumnAndRow($col$row)->getValue(); 
  88.             }     
  89.             $sql = "INSERT INTO te(`1`, `2`, `3`, `4`, `5`) VALUES ( 
  90.             '{$strs[0]}'
  91.             '{$strs[1]}'
  92.             '{$strs[2]}'
  93.             '{$strs[3]}'
  94.             '{$strs[4]}')"; 
  95.             //die($sql); 
  96.             if(!mysql_query($sql)) 
  97.             { 
  98.                 return false; 
  99.                 echo 'sql语句有误'
  100.             } 
  101.         } 
  102.     } 
  103.     else 
  104.     { 
  105.        $msg = "导入失败!"
  106.     }  
  107.     return $msg
  108. ?> 

HTML网页代码,代码如下:

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

Tags: PHPExcel类 导出导入Excel用法

分享到:

相关文章