PHPExcel一个单元格中有多个图像

PHPExcel一个单元格中有多个图像,php,phpexcel,Php,Phpexcel,我需要创建一个只有2列的excel文档。第一个将包含多个150px大的图像,第二个将包含一个web代码。由于某些原因,只添加了一个图像,并且该文件似乎已被刷新。不知道我做错了什么 <?php include("../../init.php"); if (is_numeric($_GET[groupe])){ define( 'PCLZIP_TEMPORARY_DIR', $_CONFIG['upload']['root'].'/cache' ); // filename fo

我需要创建一个只有2列的excel文档。第一个将包含多个150px大的图像,第二个将包含一个web代码。由于某些原因,只添加了一个图像,并且该文件似乎已被刷新。不知道我做错了什么

<?php
include("../../init.php");

if (is_numeric($_GET[groupe])){

  define( 'PCLZIP_TEMPORARY_DIR', $_CONFIG['upload']['root'].'/cache' );

  // filename for download
  $groupe = mysql_query("SELECT * FROM photographe_groupe WHERE id='$_GET[groupe]'");  
  $records = "Groupe - $groupe[nom].xlsx";

  header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
  header('Content-Disposition:inline;filename='.$records);

  $workbook = new PHPExcel;
  $sheet = $workbook->getActiveSheet();

  $i=0;
  $select = mysql_query("SELECT * FROM photographe_images WHERE sid='$_GET[groupe]' group by `paire`");
  while($photo = mysql_fetch_array($select)){
    // Table header
    if ($i=="1"){
        $sheet->setCellValue("A1",'Photo(s)');
        $sheet->setCellValue('B1','Code Web');
        $i++;
    }

    // Set images in col 1
    $select1 = mysql_query("SELECT * FROM photographe_images WHERE paire='$photo[paire]'");
    while($photo1 = mysql_fetch_array($select1)){

        $objDrawing = new PHPExcel_Worksheet_Drawing();
        $objDrawing->setName($photo1[img]);
        $objDrawing->setDescription($photo1[img]);
        $objDrawing->setWorksheet($workbook->getActiveSheet());
        $objDrawing->setPath($_CONFIG['upload']['root'].'/userfiles/photos/'.$photo1[img]);
        $objDrawing->setWidth(150);
        $objDrawing->setCoordinates('A'.$i);

    }

    // Set web code in col 2
    $sheet->setCellValue("B$i",$photo[code_web]);
    $i++;
  }

}
$workbook->getActiveSheet()->getRowDimension(1)->setRowHeight(-1);
$writer = new PHPExcel_Writer_Excel2007($workbook);
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
$writer->save('php://output');
?>


您可以下载并输出

在我查看您的文件之前,只需注意几点:

这里要注意的第一点是,Excel不在单元格中存储图像,它“覆盖”图像,并且不特别关心单元格边界出现的位置,因此无论覆盖多少单元格,图像都可以是固定大小

为图像指定坐标时,将该图像的左上角关联到该单元格的左上角。。。。图像的下角和/或右角所在的位置根本不是由单元格决定的。将行高或列宽设置为“自动调整大小”不会受到图像的任何影响,因为图像是重叠的,而不是单元格的内容

可以使用图形对象的
setOffsetX()
setOffsetY()
方法从相关单元格的左上角偏移图像


您可以使用不同的偏移值链接多个要相对于同一单元格左上角放置的图像,这样它们就不会重叠,但您需要计算出图像大小的偏移量,在我尝试查看您的文件之前,只需注意几点:

这里要注意的第一点是,Excel不在单元格中存储图像,它“覆盖”图像,并且不特别关心单元格边界出现的位置,因此无论覆盖多少单元格,图像都可以是固定大小

为图像指定坐标时,将该图像的左上角关联到该单元格的左上角。。。。图像的下角和/或右角所在的位置根本不是由单元格决定的。将行高或列宽设置为“自动调整大小”不会受到图像的任何影响,因为图像是重叠的,而不是单元格的内容

可以使用图形对象的
setOffsetX()
setOffsetY()
方法从相关单元格的左上角偏移图像


您可以使用不同的偏移值链接多个要相对于同一单元格左上角放置的图像,这样它们就不会重叠,但您需要计算出图像大小的偏移量

我明白了。。。听起来很复杂。。。所以我需要做的是得到图像的高度和宽度,然后将大小应用于单元格,使图像位于内部,然后计算下一个单元格的setOffsetX和setOffsetY。。。必须有更好的方法来添加图像不。。。我不知道如何在我的代码中实现这样一种策略……您已经通过调用
setWidth(150)强制设置了图像宽度可以对图像高度执行类似操作。未指定高度,否则会扭曲图像。但我仍然可以检索新的高度,并将其应用到单元格中……无论如何,你应该能够使用图像尺寸按比例计算高度,这并不能解决我当前的文件问题。。。为什么它只加载一个图像而不是重叠它们?我明白了。。。听起来很复杂。。。所以我需要做的是得到图像的高度和宽度,然后将大小应用于单元格,使图像位于内部,然后计算下一个单元格的setOffsetX和setOffsetY。。。必须有更好的方法来添加图像不。。。我不知道如何在我的代码中实现这样一种策略……您已经通过调用
setWidth(150)强制设置了图像宽度可以对图像高度执行类似操作。未指定高度,否则会扭曲图像。但我仍然可以检索新的高度,并将其应用到单元格中……无论如何,你应该能够使用图像尺寸按比例计算高度,这并不能解决我当前的文件问题。。。为什么它只加载一个图像而不是重叠它们?我明白了。。。听起来很复杂。。。所以我需要做的是得到图像的高度和宽度,然后将大小应用于单元格,使图像位于内部,然后计算下一个单元格的setOffsetX和setOffsetY。。。必须有更好的方法来添加图像不。。。我不知道如何在我的代码中实现这样一种策略……您已经通过调用
setWidth(150)强制设置了图像宽度可以对图像高度执行类似操作。未指定高度,否则会扭曲图像。但我仍然可以检索新的高度,并将其应用到单元格中……无论如何,你应该能够使用图像尺寸按比例计算高度,这并不能解决我当前的文件问题。。。为什么它只加载一个图像而不是重叠它们?