thinkphp phpexcel带多张图片导出

public function exportExcel($expTableData){
        $expTitle  = "招生统计表";
        $expCellName  = array(
            array('','序号'),
            array('childname','幼儿姓名'),
            array('childsex','宝宝性别'),
            array('nation','民族'),
            array('IDcard','身份证号'),
            array('parentname','家长姓名'),
            array('parenttel','联系电话'),
            array('relation','与幼儿关系'),
            array('addtime','添加时间'),
            array('residence_photo','户口照片')
            );
        $xlsTitle = iconv('utf-8', 'gb2312', $expTitle);
        if(stripos($_SERVER["HTTP_USER_AGENT"],"firefox")){
            $fileName = urldecode($expTitle);
        }else{
            $fileName = urlencode($expTitle);
        }
        //列数
        $cellNum = count($expCellName);
        //行数
        $dataNum = count($expTableData);
        //引用PHPExcel文件
        vendor("PHPExcel.PHPExcel");
        vendor("PHPExcel.PHPExcel.Worksheet.Drawing");
        vendor("PHPExcel.PHPExcel.Writer.Excel2007");

        $objPHPExcel = new PHPExcel();
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
        $cellName=array('A','B','C','D','E','F','G','H','I','J','K','L','M');

        $objPHPExcel->getActiveSheet(0)->mergeCells('A1:'.$cellName[$cellNum-1].'1');
        $objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', $expTitle);
        //垂直居中
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
        $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        //设置默认行高
        $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(60);
        //数据
        for ($i=0; $i < $cellNum; $i++) {
            $objPHPExcel->getActiveSheet()->getStyle($cellName[$i])->getAlignment()->setWrapText(true);
            $objPHPExcel->getActiveSheet()->getStyle($cellName[$i])->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);//垂直居中
            $objPHPExcel->getActiveSheet()->getStyle($cellName[$i])->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);//水平居中
            if(in_array($i, array('4','6','8'))){
                $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(30);
            }else{
                $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i])->setWidth(10);
            }
            $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].'2', $expCellName[$i][1]);
            for ($j=0; $j < $dataNum; $j++) { 
                if($i == 0){
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), $j+1);
                }elseif($i == 2){
                //男女显示
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), $expTableData[$j][$expCellName[$i][0]]==1?'男':'女');
                }elseif($i == 4){
                //字符串显示
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValueExplicit($cellName[$i].($j+3), $expTableData[$j][$expCellName[$i][0]], PHPExcel_Cell_DataType::TYPE_STRING);
                }elseif($i == 8){
                //时间显示
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), date('Y-m-d H:i:s',$expTableData[$j][$expCellName[$i][0]]));
                }elseif($i == 9){
                //一行多张图片导出
                    $imgs = explode(',', $expTableData[$j][$expCellName[$i][0]]);
                    foreach ($imgs as $k => $v) {
                        $objDrawing[$k] = new PHPExcel_Worksheet_Drawing();
                        //图片路径,项目目录下就行
                        $objDrawing[$k]->setPath('./'.$v);
                        $objDrawing[$k]->setCoordinates($cellName[$i+$k].($j+3));
                        $objDrawing[$k]->setWidth(50);
                        $objDrawing[$k]->setHeight(50);
                        //图片偏移距离
                        $objDrawing[$k]->setOffsetX(10);
                        $objDrawing[$k]->setOffsetY(10);
                        $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());
                        //设置列宽
                        $objPHPExcel->getActiveSheet(0)->getColumnDimension($cellName[$i+$k])->setWidth(15);
                    }
                }else{
                    $objPHPExcel->setActiveSheetIndex(0)->setCellValue($cellName[$i].($j+3), $expTableData[$j][$expCellName[$i][0]]);
                }
            }
        }
        header('pragma:public');
        header('Content-type:application/vnd.ms-excel;charset=utf-8;name="'.$xlsTitle.'.xls"');
        header("Content-Disposition:attachment;filename=$fileName.xls");
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
    }

重点内容
图片地址:项目下的地址就行,一定要加‘./’,默认为根目录下的地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值