PHPExcel导出文件带图片样式

首先更新composer update

phpexcel下载       composer require phpoffice/phpexcel

 

//导出图片
    public function excelphoto()
    {
        $res = Db::table('user')->select();
        vendor("PHPExcel.Classes.PHPExcel");

        $resultPHPExcel = new \PHPExcel();
//设置样式

        $objActSheet = $resultPHPExcel->getActiveSheet();

        // 水平居中(位置很重要,建议在最初始位置)
        $resultPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $resultPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $resultPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        // 设置个表格宽度
        $resultPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(5);
        $resultPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(15);
        $resultPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(10);

        // 垂直居中
        $resultPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $resultPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
        $resultPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);



//设值
        $resultPHPExcel->getActiveSheet()->setCellValue('A1', 'id');
        $resultPHPExcel->getActiveSheet()->setCellValue('B1', '名称');
        $resultPHPExcel->getActiveSheet()->setCellValue('C1', '图片');
        $i = 2;
        foreach ($res as $k =>$item) {
            $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['id']);
            $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']);
            $objDrawing = new \PHPExcel_Worksheet_Drawing();
            $objDrawing->setPath('.' . $item['pic']);//这里拼接 . 是因为要在根目录下获取
            // 设置宽度高度
            $objDrawing->setHeight(50);//照片高度
            $objDrawing->setWidth(50); //照片宽度
            /*设置图片要插入的单元格*/
            $objDrawing->setCoordinates('C' . $i);
            // 图片偏移距离
            $objDrawing->setOffsetX(15);
            $objDrawing->setOffsetY(15);
            $objDrawing->setWorksheet($resultPHPExcel->getActiveSheet());
            $i++;
            $objActSheet->getRowDimension($k+2)->setRowHeight(80);

        }
        //设置导出文件名

        $outputFileName = 'yantao.xls';

        $xlsWriter = new \PHPExcel_Writer_Excel5($resultPHPExcel);

        ob_end_clean();
        header("Content-Type: application/force-download");

        header("Content-Type: application/octet-stream");

        header("Content-Type: application/download");

        header('Content-Disposition:inline;filename="' . $outputFileName . '"');

        header("Content-Transfer-Encoding: binary");

        header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

        header("Pragma: no-cache");

        $xlsWriter->save("php://output");
    }

 

 

 解决方案

 更改:vendor->PHPExcel->Vlasses->PHPExcel->Shared->OLE.php->

 

 

 

 效果演示

 

 

导入PHPExcel文件

 public function excel(){
        $request = \think\Request::instance();
        $excel = request()->file('excel')->getInfo();//excel为file中的name
        vendor("PHPExcel.PHPExcel.IOFactory");
        $objPHPExcel = \PHPExcel_IOFactory::load($excel['tmp_name']);//读取上传的文件
        $arrExcel = $objPHPExcel->getSheet(0)->toArray();//获取其中的数据
$word = $arrExcel[0];
array_shift($arrExcel);

        $data = array();
        $num = count($arrExcel) -1;
     foreach ($arrExcel as $key => $value) {

         $data[] = array(
            'company_name'=>$arrExcel[$key][0]
            );

     }

     $result = Db::table('ag_company')->insertAll($data);
    if($result){
        $this->success('导入成功');
    }else{
        $this->error('导入失败');
    }
    }

 

posted @ 2021-03-15 09:35  森影  阅读(378)  评论(0编辑  收藏  举报