TP3.2加載外部PHPexcel類,實現導入和導出


導入:

1、將下載好的PHPexcel文件放到libray/Org/Uti/文件夾下,將PHPEXCEL.PHP改為PHPEXCEL.class.php

2、導入類文件

代碼:

import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Reader.Excel5");

3、配置

代碼:

$objReader = \PHPExcel_IOFactory::createReader('Excel5');//配置成2003版本,因為office版本可以向下兼容
$objPHPExcel = $objReader->load($file,$encode='utf-8');//$file 為解讀的excel文件

4、解讀表格

代碼:

$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得總行數
$highestColumn = $sheet->getHighestColumn(); // 取得總列數

5、填入數據庫

代碼:

for($j=2;$j<=$highestRow;$j++)
{
$a = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();//白天司機姓名列
$b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//晚上司機姓名列
    if(!is_null($a)){
        $data['driver'] = $a;
       $res = M('carcount_user')->data($data)->add();
     }
}

if($res){
      $this->success('填入數據庫表完成!');
}

導出:

1、

放在vendor文件夾下不用import導入,實例化即可,注意new 后要使用\

代碼:

 

vendor('PHPExcel');
$objExcel = new \PHPExcel();
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel5');

2、設置表頭

$objExcel->getActiveSheet()->setCellValue('A1','司機');

3、填入數據

$count = count($driver);//$driver 為數據庫表取出的數據
for ($i = 2; $i <= $count+1; $i++) {
  $objExcel->getActiveSheet()->setCellValue('A' . $i, $driver[$i-2]['driver']);
}

4、輸出

$objExcel->setActiveSheetIndex();
header('Content-Type: applicationnd.ms-excel');
header('Content-Disposition: attachment;filename="test.xls"');
header('Cache-Control: max-age=0');

$objWriter->save('php://output');
exit;

總結:

PHPEXCEL相比reader功能多,bug少,在和TP搭配時要講文件放在vendor/(實例化即可)或者org/uti/(用import導入)下,導入時關鍵函數為:getActiveSheet(),getCell("D".$j),getValue(),導出時關鍵函數為getActiveSheet(),setCellValue('A1','司機')。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM