PHPExcel类导出excel表带图片

14 篇文章 0 订阅
4 篇文章 0 订阅

使用PHPExcel类导出excel表格数据,表中带图片导出

/**
     *
     * 导出Excel
     */
    public function export(){//导出Excel
     
        $data = Db::name('test')->select(); // 查询出来的数据

        import('PHPExcel.PHPExcel', EXTEND_PATH);
        $objPHPExcel = new \PHPExcel();

        $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
        $objActSheet = $objPHPExcel->getActiveSheet();
        // 设置水平居中,有几列数据,就设置几列
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);

        // 设置第一列的标题值
        $objActSheet->setCellValue('A1', '名称');
        $objActSheet->setCellValue('B1', '二维码编号');
        $objActSheet->setCellValue('C1', '分类名');
        $objActSheet->setCellValue('D1', '内容摘要');
        $objActSheet->setCellValue('E1', '关键字');
        $objActSheet->setCellValue('F1', '二维码类型');
        $objActSheet->setCellValue('G1', '图片');

        // 设置个表格宽度
       $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(16);
       $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
       $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
       $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
       $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(12);
       $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(12);
       $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
       // 垂直居中
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('D')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('E')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('F')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       $objPHPExcel->setActiveSheetIndex(0)->getStyle('G')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
       // 组装数据,处理图片
       $inputFileName = ROOT_PATH .'upload' .DS;
       //
       foreach($data as $k=>$v){
            $k +=2;
            $objActSheet->setCellValue('A'.$k, $v['post_title']);
            $objActSheet->setCellValue('B'.$k, $v['qr_number']);
            $objActSheet->setCellValue('C'.$k, $v['name']);
            $objActSheet->setCellValue('D'.$k, $v['post_excerpt']);
            $objActSheet->setCellValue('E'.$k, $v['page_keywords']);
            $objActSheet->setCellValue('F'.$k, $v['qr_type']);

            //获取到图片信息
            // 图片生成
            $objDrawing[$k] = new \PHPExcel_Worksheet_Drawing();
            if(isset($v['more']['thumbnail']) && !empty($v['more']['thumbnail'])){
                if(file_exists($inputFileName.$v['more']['thumbnail'])){
                    $objDrawing[$k]->setPath($inputFileName.$v['more']['thumbnail']);//这里拼接 . 是因为要在根目录下获取
                    // 设置宽度高度
                    $objDrawing[$k]->setHeight(80);//照片高度
                    $objDrawing[$k]->setWidth(80); //照片宽度
                    /*设置图片要插入的单元格*/
                    $objDrawing[$k]->setCoordinates('G'.$k);
                    // 图片偏移距离
                    $objDrawing[$k]->setOffsetX(2);
                    $objDrawing[$k]->setOffsetY(2);
                    $objDrawing[$k]->setWorksheet($objPHPExcel->getActiveSheet());

                    // 表格高度
                    $objActSheet->getRowDimension($k)->setRowHeight(80);
                }
            }else{
                $objActSheet->setCellValue('G'.$k, $v['issuing']);
            }
        }

        $fileName = '测试表.xls';
        $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'); //文件通过浏览器下载

    }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值