php 导出带图片的表格

public function export_excel($ids=null){
    if(empty($ids)){
        $this->error('请先选择数据');
    }
    $subQuery = Db::table('wh_quality_result')
    ->where('goods_result',3)
    ->group('goods_sku')
    ->buildSql();
    $list = Db::table('wh_error_goods_quality')->alias('wegq')
->join([$subQuery=>'wqr'],'wegq.into_store_code = wqr.into_store_code and wegq.goods_sku = wqr.goods_sku','left')
    ->join(['wh_quality_param'=>'wqp'],'wqp.id = wqr.param_id','left')
    ->field('wegq.*,wqp.grade,wqp.num,wqr.img_path,wqp.project')
    ->where('wegq.type',3)
    ->where('wegq.id','in',$ids)
    ->order('wegq.id')
    ->select();

    $objPHPExcel = new \PHPExcel();
    $objPHPExcel->getActiveSheet()->SetCellValue('A' . 1, '商品sku');
    $objPHPExcel->getActiveSheet()->SetCellValue('B' . 1, '等级');
    $objPHPExcel->getActiveSheet()->SetCellValue('C' . 1, '序号');
    $objPHPExcel->getActiveSheet()->SetCellValue('D' . 1, '问题');
    $objPHPExcel->getActiveSheet()->SetCellValue('E' . 1, '图片');
    $num=2;
    foreach ($list as $k => $v) {
        $objPHPExcel->getActiveSheet()->SetCellValue('A' . $num, $v['goods_sku']);
        $objPHPExcel->getActiveSheet()->SetCellValue('B' . $num, $v['grade']);
        $objPHPExcel->getActiveSheet()->SetCellValue('C' . $num, $v['num']);
        $objPHPExcel->getActiveSheet()->SetCellValue('D' . $num, $v['project']);
        $objDrawing = new \PHPExcel_Worksheet_MemoryDrawing();
        $image = $v['img_path'];
// 截取图片的格式,用不同的方法
    $img_type = substr($image, -3);

    if ($img_type == 'jpg' ||$img_type == 'peg') {
        $img = @imagecreatefromjpeg('http://' . $_SERVER['HTTP_HOST'].$image);
    }else if ($img_type == 'png') {
        $img = @imagecreatefrompng('http://' . $_SERVER['HTTP_HOST'].$image);
    }else if ($img_type == 'gif') {
        $img = @imagecreatefromgif('http://' . $_SERVER['HTTP_HOST'].$image);
    }

    $objDrawing->setImageResource($img);
    $objDrawing->setRenderingFunction(\PHPExcel_Worksheet_MemoryDrawing::RENDERING_DEFAULT);//渲染方法

    $objDrawing->setMimeType(\PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);
    $objDrawing->setHeight(40);
    $objDrawing->setWidth(60);
    $objDrawing->setCoordinates('E' . $num);
    $objDrawing->setOffsetX(8);
    $objDrawing->setOffsetY(8);
    $objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
    $objPHPExcel->getActiveSheet()->getRowDimension($num)->setRowHeight(80);


    //objPHPExcel->getActiveSheet()->SetCellValue('E' . $num, $v['img_path']);
    $num++;
    }
// 文件名称
    $fileName = "质检不合格" . date('Ymdhms', time());
    $xlsName = iconv('utf-8', 'gb2312', $fileName);
// 设置工作表名
    $objPHPExcel->getActiveSheet()->setTitle('sheet');
//下载 excel5与excel2007
    $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
    ob_end_clean(); // 清除缓冲区,避免乱码
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
    header("Content-Type:application/force-download");
    header("Content-Type:application/vnd.ms-execl;charset=UTF-8");
    header("Content-Type:application/octet-stream");
    header("Content-Type:application/download");
    header("Content-Disposition:attachment;filename=" . $xlsName . ".xlsx");
    header("Content-Transfer-Encoding:binary");
    $objWriter->save("php://output");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PhpSpreadsheet可以将Excel表格中的图片导出,只需要在导出Excel时对图片进行处理即可。 首先需要将图片插入到Excel表格中,可以使用`PhpSpreadsheet\Worksheet\Drawing`类来实现。例如: ```php use PhpOffice\PhpSpreadsheet\Worksheet\Drawing; // 创建一个 Drawing 对象 $drawing = new Drawing(); $drawing->setName('Logo'); $drawing->setDescription('Logo'); $drawing->setPath('path/to/image.jpg'); $drawing->setHeight(50); $drawing->setCoordinates('A1'); // 将 Drawing 对象添加到工作表中 $worksheet->getRowDimension(1)->setRowHeight(80); $worksheet->getColumnDimension('A')->setWidth(30); $worksheet->setCellValue('A1', '这是一个图片的单元格'); $worksheet->setDrawing($drawing); ``` 上面的代码中,我们创建了一个Drawing对象,并设置了图片的路径、高度、位置等属性。然后将Drawing对象添加到工作表中,再将单元格的值设置为图片的描述。 接下来,可以使用`PhpSpreadsheet\IOFactory`类将工作表导出为Excel文件。例如: ```php use PhpOffice\PhpSpreadsheet\IOFactory; // 创建一个工作簿对象 $spreadsheet = new Spreadsheet(); $worksheet = $spreadsheet->getActiveSheet(); // 插入图片到工作表中 // 导出Excel文件 $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('path/to/exported.xlsx'); ``` 这样就可以将图片的Excel表格导出了。需要注意的是,导出的Excel文件中可能会出现图片失真或者位置偏移的情况,需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生若梦01

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值