天天看点

ThinkPHP3.2导出Excel表格

PHP端代码

需要插件PHPExcel,放在ThinkPHP/Library/Vendor/目录下

调用导出方法

    public function expUser(){//导出Excel

            $xlsName  = "User用户数据表";

            $xlsCell  = array(

                array('id','id'),

                array('userid','userid'),

                array('card','卡号'),

                array('addr','开户行'),

            );

            $xlsModel = M('bank');

            $xlsData  = $xlsModel->Field('id,userid,card,addr')->select();

            $this->exportExcel($xlsName,$xlsCell,$xlsData);

        }

导出方法

    public function exportExcel($expTitle,$expCellName,$expTableData){

        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);//文件名称

        $fileName = $expTitle.date('_Ymd_His');//or $xlsTitle 文件名称可根据自己情况设定

        $cellNum = count($expCellName);

        $dataNum = count($expTableData);

        vendor("PHPExcel.PHPExcel");

        $objPHPExcel = new \PHPExcel();

        $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');

        $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');//合并单元格

        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle.'  Export time:'.date('Y-m-d H:i:s'));//第一行标题

        for($i=0;$i<$cellNum;$i++){

            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);

        }

        // Miscellaneous glyphs, UTF-8

        for($i=0;$i<$dataNum;$i++){

            for($j=0;$j<$cellNum;$j++){

                $objPHPExcel->getActiveSheet(0)->setCellValue($cellName[$j].($i+3), $expTableData[$i][$expCellName[$j][0]]);

            }

        }

        ob_end_clean();//由于缓存可能在本地测试可以,上线后不行,加上此代码即可

        header('pragma:public');

        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');

        header("Content-Disposition:attachment;filename=$fileName.xls");//attachment新窗口打印inline本窗口打印

        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');

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

        exit;

    }