TP3.2加载外部PHPexcel类,实现导入和导出

TP3.2加载外部PHPexcel类,实现导入和导出

导入:php

一、将下载好的PHPexcel文件放到libray/Org/Uti/文件夹下,将PHPEXCEL.PHP改成PHPEXCEL.class.phphtml

二、导入类文件数据库

代码:app

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

三、配置post

代码:this

$objReader = \PHPExcel_IOFactory::createReader('Excel5');//配置成2003版本,由于office版本能够向下兼容
$objPHPExcel = $objReader->load($file,$encode='utf-8');//$file 为解读的excel文件url

四、解读表格excel

代码:code

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

五、填入数据库

代码:

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('填入数据库表完成!');
}

导出:

一、

放在vendor文件夹下不用import导入,实例化便可,注意new 后要使用\

代码:

 

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

二、设置表头

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

三、填入数据

$count = count($driver);//$driver 为数据库表取出的数据
for ($i = 2; $i <= $count+1; $i++) {
  $objExcel->getActiveSheet()->setCellValue('A' . $i, $driver[$i-2]['driver']); 
}

四、输出

$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','司机')。

相关文章
相关标签/搜索