Phpspreadsheet 使用PHPSReadSheet在excel中添加多个图像

Phpspreadsheet 使用PHPSReadSheet在excel中添加多个图像,phpspreadsheet,phpoffice,Phpspreadsheet,Phpoffice,此问题通过解决方法解决。如果我使用excel中的PhpSpreadsheet复制多个图像,并且具有相同的图像名称和不同的路径,则只会多次添加最后一个图像。但是如果我用不同的名字重命名图像,它就可以正常工作了。例如,如果我将path1/thumb.png和path2/thumb.png复制到excel,那么path2/thumb.png将被复制两次。但是如果我复制,path1/image1.png和path2/image2.png,它就可以正常工作了。范例 <?php require 've

此问题通过解决方法解决。如果我使用excel中的PhpSpreadsheet复制多个图像,并且具有相同的图像名称和不同的路径,则只会多次添加最后一个图像。但是如果我用不同的名字重命名图像,它就可以正常工作了。例如,如果我将
path1/thumb.png
path2/thumb.png
复制到excel,那么
path2/thumb.png
将被复制两次。但是如果我复制,
path1/image1.png和path2/image2.png
,它就可以正常工作了。范例

<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$name = "image.xlsx";    
$writer = new Xlsx($spreadsheet);
$writer->save($name);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);

$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
//$drawing->setPath("path1/thumb.png");  I AM COPING AND UPDATING NAME
copy("path1/thumb1.png","thumb1.png");//WORKAROUND FOR THIS ISSUE
$drawing->setPath("thumb1.png");
$drawing->setName('Logo');
$drawing->setCoordinates('B2');
$drawing->setWidthAndHeight(500, 500);
$drawing->setWorksheet($spreadsheet->setActiveSheetIndex(0));   
$writer->save( $name );

$writer2 = new Xlsx($spreadsheet);
$writer2->save($name);
$writer2 = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
$drawing1 = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
//$drawing->setPath("path2/thumb.png"); THIS WILL OVERWRITE ABOVE path1/thumb1.png, and will be inserted twice.
copy("path2/thumb1.png","thumb2.png");//WORKAROUND FOR THIS ISSUE
$drawing1->setPath("thumb2.png");
$drawing->setName('New image');
$drawing1->setCoordinates('B24');
$drawing1->setWidthAndHeight(500, 500);
$drawing1->setWorksheet($spreadsheet->setActiveSheetIndex(0));  
$writer2->save( $name );
?>

您可以用

$writer2=新的Xlsx($spreadsheet)

第一个图像

试一试


我尝试了您的代码,没有发现任何差异。完全相同的结果。
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$name = "image.xlsx";    
$writer = new Xlsx($spreadsheet);
$writer->save($name);
$writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);

$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing->setPath("thumb1.png");
$drawing->setName('Logo');
$drawing->setCoordinates('B2');
$drawing->setWidthAndHeight(500, 500);
$drawing->setWorksheet($spreadsheet->setActiveSheetIndex(0));   

$drawing1 = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$drawing1->setPath("thumb2.png");
$drawing1->setName('New image');
$drawing1->setCoordinates('B24');
$drawing1->setWidthAndHeight(500, 500);
$drawing1->setWorksheet($spreadsheet->setActiveSheetIndex(0));  
$writer->save( $name );
?>