超实用的PHPExcel[导入][导出]实现方法总结

首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可。

1、PHPExcel导出方法实现过程

[php]  view plain  copy
  1. /** 
  2.  * 数据导出 
  3.  * @param array $title   标题行名称 
  4.  * @param array $data   导出数据 
  5.  * @param string $fileName 文件名 
  6.  * @param string $savePath 保存路径 
  7.  * @param $type   是否下载  false--保存   true--下载 
  8.  * @return string   返回文件全路径 
  9.  * @throws PHPExcel_Exception 
  10.  * @throws PHPExcel_Reader_Exception 
  11.  */  
  12. function exportExcel($title=array(), $data=array(), $fileName=''$savePath='./'$isDown=false){  
  13.     include('PHPExcel.php');  
  14.     $obj = new PHPExcel();  
  15.   
  16.     //横向单元格标识  
  17.     $cellName = array('A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z''AA''AB''AC''AD''AE''AF''AG''AH''AI''AJ''AK''AL''AM''AN''AO''AP''AQ''AR''AS''AT''AU''AV''AW''AX''AY''AZ');  
  18.       
  19.     $obj->getActiveSheet(0)->setTitle('sheet名称');   //设置sheet名称  
  20.     $_row = 1;   //设置纵向单元格标识  
  21.     if($title){  
  22.         $_cnt = count($title);  
  23.         $obj->getActiveSheet(0)->mergeCells('A'.$_row.':'.$cellName[$_cnt-1].$_row);   //合并单元格  
  24.         $obj->setActiveSheetIndex(0)->setCellValue('A'.$_row'数据导出:'.date('Y-m-d H:i:s'));  //设置合并后的单元格内容  
  25.         $_row++;  
  26.         $i = 0;  
  27.         foreach($title AS $v){   //设置列标题  
  28.             $obj->setActiveSheetIndex(0)->setCellValue($cellName[$i].$_row$v);  
  29.             $i++;  
  30.         }  
  31.         $_row++;  
  32.     }  
  33.   
  34.     //填写数据  
  35.     if($data){  
  36.         $i = 0;  
  37.         foreach($data AS $_v){  
  38.             $j = 0;  
  39.             foreach($_v AS $_cell){  
  40.                 $obj->getActiveSheet(0)->setCellValue($cellName[$j] . ($i+$_row), $_cell);  
  41.                 $j++;  
  42.             }  
  43.             $i++;  
  44.         }  
  45.     }  
  46.       
  47.     //文件名处理  
  48.     if(!$fileName){  
  49.         $fileName = uniqid(time(),true);  
  50.     }  
  51.   
  52.     $objWrite = PHPExcel_IOFactory::createWriter($obj'Excel2007');  
  53.   
  54.     if($isDown){   //网页下载  
  55.         header('pragma:public');  
  56.         header("Content-Disposition:attachment;filename=$fileName.xls");  
  57.         $objWrite->save('php://output');exit;  
  58.     }  
  59.   
  60.     $_fileName = iconv("utf-8""gb2312"$fileName);   //转码  
  61.     $_savePath = $savePath.$_fileName.'.xlsx';  
  62.      $objWrite->save($_savePath);  
  63.   
  64.      return $savePath.$fileName.'.xlsx';  
  65. }  
  66.   
  67. //exportExcel(array('姓名','年龄'), array(array('a',21),array('b',23)), '档案', './', true);  

2、PHPExcel导入方法实现过程

[php]  view plain  copy
  1. /** 
  2. *  数据导入 
  3. * @param string $file excel文件 
  4. * @param string $sheet 
  5.  * @return string   返回解析数据 
  6.  * @throws PHPExcel_Exception 
  7.  * @throws PHPExcel_Reader_Exception 
  8. */  
  9. function importExecl($file=''$sheet=0){  
  10.     $file = iconv("utf-8""gb2312"$file);   //转码  
  11.     if(empty($file) OR !file_exists($file)) {  
  12.         die('file not exists!');  
  13.     }  
  14.     include('PHPExcel.php');  //引入PHP EXCEL类  
  15.     $objRead = new PHPExcel_Reader_Excel2007();   //建立reader对象  
  16.     if(!$objRead->canRead($file)){  
  17.         $objRead = new PHPExcel_Reader_Excel5();  
  18.         if(!$objRead->canRead($file)){  
  19.             die('No Excel!');  
  20.         }  
  21.     }  
  22.   
  23.     $cellName = array('A''B''C''D''E''F''G''H''I''J''K''L''M''N''O''P''Q''R''S''T''U''V''W''X''Y''Z''AA''AB''AC''AD''AE''AF''AG''AH''AI''AJ''AK''AL''AM''AN''AO''AP''AQ''AR''AS''AT''AU''AV''AW''AX''AY''AZ');  
  24.   
  25.     $obj = $objRead->load($file);  //建立excel对象  
  26.     $currSheet = $obj->getSheet($sheet);   //获取指定的sheet表  
  27.     $columnH = $currSheet->getHighestColumn();   //取得最大的列号  
  28.     $columnCnt = array_search($columnH$cellName);  
  29.     $rowCnt = $currSheet->getHighestRow();   //获取总行数  
  30.   
  31.     $data = array();  
  32.     for($_row=1; $_row<=$rowCnt$_row++){  //读取内容  
  33.         for($_column=0; $_column<=$columnCnt$_column++){  
  34.             $cellId = $cellName[$_column].$_row;  
  35.             $cellValue = $currSheet->getCell($cellId)->getValue();  
  36.              //$cellValue = $currSheet->getCell($cellId)->getCalculatedValue();  #获取公式计算的值  
  37.             if($cellValue instanceof PHPExcel_RichText){   //富文本转换字符串  
  38.                 $cellValue = $cellValue->__toString();  
  39.             }  
  40.   
  41.             $data[$_row][$cellName[$_column]] = $cellValue;  
  42.         }  
  43.     }  
  44.   
  45.     return $data;  
  46. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值