use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;$drawing = new Drawing();$drawing->setName('Logo');$drawing->setDescription('Company Logo');$drawing->setPath('./images/logo.jpg');$drawing->setHeight(36);$drawing->setWorksheet($spreadsheet->getActiveSheet());
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;$drawing = new Drawing();$drawing->setName('Paid Stamp');$drawing->setDescription('Paid stamp image');$drawing->setPath('./images/paid.png');$drawing->setCoordinates('B15');$drawing->setOffsetX(110);$drawing->setOffsetY(10);$drawing->setHeight(50);$drawing->setWorksheet($spreadsheet->getActiveSheet());
// Set height (width adjusts proportionally)$drawing->setHeight(100);// Set width (height adjusts proportionally)$drawing->setWidth(200);// Set both dimensions (may distort image)$drawing->setWidth(200);$drawing->setHeight(100);
use PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing;// Create an image using GD$gdImage = @imagecreatetruecolor(120, 20) or die('Cannot initialize GD image');$textColor = imagecolorallocate($gdImage, 255, 255, 255);imagestring($gdImage, 1, 5, 5, 'Created with PhpSpreadsheet', $textColor);// Add the in-memory image to worksheet$drawing = new MemoryDrawing();$drawing->setName('In-Memory Image');$drawing->setDescription('Dynamically created image');$drawing->setCoordinates('A1');$drawing->setImageResource($gdImage);$drawing->setRenderingFunction( MemoryDrawing::RENDERING_JPEG);$drawing->setMimeType(MemoryDrawing::MIMETYPE_DEFAULT);$drawing->setHeight(36);$drawing->setWorksheet($spreadsheet->getActiveSheet());
GD images are memory-intensive. Use them sparingly in production environments.
Control how images behave when rows/columns are resized:
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;$drawing = new Drawing();$drawing->setPath('./images/logo.png');$drawing->setCoordinates('B2');// Options:// 1. Move and size with cells$drawing->setResizeProportional(true);// 2. Move but don't size with cells (default)$drawing->setResizeProportional(false);// 3. Don't move or size with cells$drawing->setEditAs(Drawing::EDIT_AS_ABSOLUTE);$drawing->setWorksheet($spreadsheet->getActiveSheet());