thinkphp3.2 整合 PHPEXCEL

3581
  1. PHPExcel.php和PHPExcel文件夹都放在ThinkPHP/Library/Org/Util下,点击下载:PHPEXCEL


//===导入exel操作
public function index(){
    //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
import("Org.Util.PHPExcel");
//要导入的xls文件,位于根目录下的Public文件夹
$filename="./Public/1.xls";
//创建PHPExcel对象,注意,不能少了\
$PHPExcel=new \PHPExcel();
//如果excel文件后缀名为.xls,导入这个类
import("Org.Util.PHPExcel.Reader.Excel5");
//如果excel文件后缀名为.xlsx,导入这下类
//import("Org.Util.PHPExcel.Reader.Excel2007");
//$PHPReader=new \PHPExcel_Reader_Excel2007();
$PHPReader=new \PHPExcel_Reader_Excel5();
//载入文件
$PHPExcel=$PHPReader->load($filename);
//获取表中的第一个工作表,如果要获取第二个,把0改为1,依次类推
$currentSheet=$PHPExcel->getSheet(0);
//获取总列数
$allColumn=$currentSheet->getHighestColumn();
//获取总行数
$allRow=$currentSheet->getHighestRow();
//循环获取表中的数据,$currentRow表示当前行,从哪行开始读取数据,索引值从0开始
for($currentRow=1;$currentRow<=$allRow;$currentRow++){
//从哪列开始,A表示第一列
for($currentColumn='A';$currentColumn<=$allColumn;$currentColumn++){
//数据坐标
$address=$currentColumn.$currentRow;
//读取到的数据,保存到数组$arr中
$arr[$currentRow][$currentColumn]=$currentSheet->getCell($address)->getValue();
}
}
    $this->assign("data",$arr);
// dump($arr);
$this->display();
    }
    //导出
    public function out(){
    $data = array(
    array('username'=>'zhangsan','password'=>"123456"),
    array('username'=>'lisi','password'=>"abcdefg"),
    array('username'=>'wangwu','password'=>"111111"),
    );
    //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.Writer.Excel5");
import("Org.Util.PHPExcel.IOFactory.php");
$filename = "test_excel"; //文件名
$headArr = array("用户名","密码"); //标题
$this->getExcel($filename,$headArr,$data);
}
//检查数据并且生成文件 提供下载
privatefunction getExcel($fileName,$headArr,$data){
//对数据进行检验
    if(empty($data) || !is_array($data)){
        die("data must be a array");
    }
    //检查文件名
    if(empty($fileName)){
        exit;
    }
    $date = date("Y_m_d",time());
    $fileName .= "_{$date}.xls";
//创建PHPExcel对象,注意,不能少了\
    $objPHPExcel = new \PHPExcel();
    $objProps = $objPHPExcel->getProperties();
    //设置表头
    $key = ord("A");
    foreach($headArr as $v){
        $colum = chr($key);
        $objPHPExcel->setActiveSheetIndex(0) ->setCellValue($colum.'1', $v);
        $key += 1;
    }
    
    $column = 2;
    $objActSheet = $objPHPExcel->getActiveSheet();
    foreach($data as $key => $rows){ //行写入
        $span = ord("A");
        foreach($rows as $keyName=>$value){// 列写入
            $j = chr($span);
            $objActSheet->setCellValue($j.$column, $value);
            $span++;
        }
        $column++;
    }
    $fileName = iconv("utf-8", "gb2312", $fileName);
    //重命名表
   // $objPHPExcel->getActiveSheet()->setTitle('test');
    //设置活动单指数到第一个表,所以Excel打开这是第一个表
    $objPHPExcel->setActiveSheetIndex(0);
    header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename=\"$fileName\"");
header('Cache-Control: max-age=0');
  $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output'); //文件通过浏览器下载
    exit;
}


感谢Thinkphp 官网大神们的支持....

玄玄博客 :http://www.blogxuan.com/