Reputation: 307
This issue is solved with workaround. If I copy multiple images, using PhpSpreadsheet in excel, having same image name and different paths, than only last image is added multiple times. But if I rename images with different names, than it's working fine. Eg, if I copy path1/thumb.png
and path2/thumb.png
to excel, than path2/thumb.png
will be copied two times. But if if I copy, path1/image1.png and path2/image2.png
, than it's working fine. Example
<?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 );
?>
...
Upvotes: 0
Views: 2662
Reputation: 875
You overwrite with
$writer2 = new Xlsx($spreadsheet);
the first image.
Try
<?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 );
?>
Upvotes: 1