• 技术文章 >后端开发 >PHP问题

    PHP如何实现表格Excel的导出

    GuanhuiGuanhui2020-05-15 11:41:44原创687

    PHP如何实现表格Excel的导出

    首先下载PHPExcel包并将包引入到项目中;然后实例化PHPExcel对象;接着设置表格的列,以及列队属性;再将数据添加到表格中;最后将表格文件数据输出即可。

    PHPExcel

    是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格

    ThinkPHP示例

    public function exportExcel()
    {
        //先获取数据
        $where['comid'] = session('uid');
        $res = M('cheliang')->where($where)->select();
       // var_dump($res);die;
    
        //下面就是导出的步骤了
        vendor('PHPExcel0.Classes.PHPExcel');
    
        $objPHPExcel = new \PHPExcel();
        $objPHPExcel->createSheet(0);
        $objPHPExcel->setActiveSheetIndex(0);
       //只需要把你想要的字段改成你自己需要的就可以了!!!
            $objPHPExcel->setActiveSheetIndex(0)
                ->setCellValue('A1', '考试人')
                ->setCellValue('B1', '车牌')
                ->setCellValue('C1', '考试时间')
                ->setCellValue('D1', '考试分数')
                ->setCellValue('E1', '签名');
    
            $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);//设置单元格宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(50);//设置单元格宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);//设置单元格宽度
            $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);//设置单元格宽度
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);      //第一行是否加粗
            $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);      //第一行是否加粗
            $objPHPExcel->getActiveSheet()->getStyle('C1')->getFont()->setBold(true);      //第一行是否加粗
            $objPHPExcel->getActiveSheet()->getStyle('D1')->getFont()->setBold(true);      //第一行是否加粗
            $objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->setBold(true);      //第一行是否加粗
            //$objPHPExcel->getActiveSheet()->getStyle('A1')->getFont()->setSize(16);         //第一行字体大小
            // 设置垂直居中
            $objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('B1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('C1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('D1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
            $objPHPExcel->getActiveSheet()->getStyle('E1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
    
            // 设置行高度
            $objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20); //设置默认行高
            $objPHPExcel->getActiveSheet()->getRowDimension('1')->setRowHeight(30);    //第一行行高
            //循环添加数据,注意的是下面的$kk+2,是因为$kk是下标,从0开始的,而第一行是你的标题,所以要从第二行开始才是你的数据
            foreach ($data as $kk => $vv) {
                $no = $kk + 2;
                    $currentSheet = $objPHPExcel->getActiveSheet();
                    $currentSheet->setCellValue('A' . $no, $vv['xueyuan']['name']);
                    $currentSheet->setCellValue('B' . $no, $vv['xueyuan']['chepaihao']);
                    $currentSheet->setCellValue('C' . $no, date('Y-m-d H:i:s',$vv['addtime']).'至'.date('Y-m-d H:i:s',$vv['sbttime']));
                    $currentSheet->setCellValue('D' . $no, $vv['score']);
                    //设置单元格高度,这个是重点哦
                    $currentSheet->getRowDimension($no) -> setRowHeight(40);
                    // 图片生成
                    $objDrawing[$kk] = new \PHPExcel_Worksheet_Drawing();//这个就是生成图片的类(重点)
                    $objDrawing[$kk]->setPath('./'.$vv['qmimg']);/图片的路径
                    // 设置宽度高度
                    $objDrawing[$kk]->setHeight(85);//照片高度
                    $objDrawing[$kk]->setWidth(100); //照片宽度
                    /*设置图片要插入的单元格*/
                    $objDrawing[$kk]->setCoordinates('E'.$no);
                    // 图片偏移距离
                     $objDrawing[$kk]->setOffsetX(12);
                     $objDrawing[$kk]->setOffsetY(12);
                    $objDrawing[$kk]->setWorksheet($objPHPExcel->getActiveSheet());
            }
    
        $objPHPExcel->setActiveSheetIndex(0);
        header('Content-Type: application/vnd.ms-excel');
    
        header('Content-Disposition: attachment;filename="' . '文件名称'. '.xls"');
        header('Cache-Control: max-age=0');
        $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
    }

    推荐教程:《PHP教程

    以上就是PHP如何实现表格Excel的导出的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php excel
    上一篇:PHP如何将时间戳转换日期 下一篇:PHP数据结构有几种
    大前端线上培训班

    相关文章推荐

    • PHP中怎么进行URL转发• PHP如何实现RESTful原理• PHP如何将时间戳转换日期• thinkphp5实现后台登录界面的方法• PHP7 内核 Object 深入理解

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网