美文网首页
PHPEXCEL 导出数据加图片

PHPEXCEL 导出数据加图片

作者: 熊大y | 来源:发表于2017-09-11 11:01 被阅读0次

    前言

    图片对excel来说是一个对象,正常是导出不到单元格里去,所以大家都很困惑到底该怎么使用PHP语言来进行导出呢!下面我就详细的讲解下怎么使用php导出图片到excel(此例是使用CI框架)

    开始啦!~~~~

    如果你没有PHPEXCEL类库,可以到http://phpexcel.codeplex.com/里去下载!
    下载完成后导入到自己框架的第三方类库!~CI示例:

    注释:这个是CI项目的哦,别的框架放到类库里就行了

    下面开始我们的代码操作!~:

     //CI框架引入PHPExcel
    $this->load->library('PHPExcel');
    //实例化PHPExcel类
    $objPHPExcel = new PHPExcel();
    

    重点来了!!!!

    //图片处理类,这个才是图片导出的关键哦
    $objDrawing = new PHPExcel_Worksheet_Drawing();
    

    //然后正常设置我们导出图片的代码

    $objPHPExcel->createSheet(0);
    $objPHPExcel->setActiveSheetIndex(0);
    $currentSheet = $objPHPExcel->getActiveSheet();
    

    // 水平居中(位置很重要,建议在最初始位置,这里我举例,ABCDEFG,可以按照自己的需求定义!~)

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

    // 设置个表格宽度(这个一定要设置哦,不然图片会大厨单元格的)

    $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(20);
    $objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(20);
    

    //设置第一行标题

    $currentSheet->setCellValue('A1', "序列号");
    $currentSheet->setCellValue('B1', "设备ID");
    $currentSheet->setCellValue('C1', "设备密码");
    $currentSheet->setCellValue('D1', "设备编码");
    $currentSheet->setCellValue('E1', "二维码");
    $currentSheet->setCellValue('F1', "二维码");
    $currentSheet->setCellValue('G1', "二维码");
    

    //定义变量初始化为2,从第二行开始

    $idx          = 2;
    

    //开始循环数组数据!~

    foreach ($devices as $device) {
      //设置数据所在单元格,我这里把图片放在E里
      $currentSheet->setCellValue('A' . $idx, $device['sequence']);
      $currentSheet->setCellValue('B' . $idx, $device['device_unique']);
      $currentSheet->setCellValue('C' . $idx, $device['device_pwd']);
      $currentSheet->setCellValue('D' . $idx, $device['device_code']);
      //设置单元格高度,这个是重点哦
      $currentSheet->getRowDimension($idx) -> setRowHeight(60);
    

    图片操作来了!~~~

      //获取图片
      $this->load->model('Device_codes_model');
      $codes = $this->Device_codes_model->getOneCodes($id);
      //开始设置图片啦~~
      $objDrawing->setPath($codes['code_file']);
      // 设置图片宽度高度
      $objDrawing->setHeight(80);//照片高度
      $objDrawing->setWidth(80); //照片宽度
      /*设置图片要插入的单元格*/
      $objDrawing->setCoordinates('E'.$idx);
      // 图片偏移距离
      $objDrawing->setOffsetX(12);
      $objDrawing->setOffsetY(12);
      $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
      $idx++;
    }
    

    //导出excel到表格

    $sheetWrite = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    
    5882b2b7d0a20cf4ac8505b070094b36acaf994c.jpg

    有没有对你起到帮助呢!不懂的可以咨询:WX:nxy18336033555 QQ:1264512198 加的时候备注一下哦!~

    相关文章

      网友评论

          本文标题:PHPEXCEL 导出数据加图片

          本文链接:https://www.haomeiwen.com/subject/ckixsxtx.html