PHP Excel图像更改大小


PHP Excel image change size

开发PHP代码,使用PHP Excel创建Excel文件。

我需要将图像放入XLS文件中。我遇到的问题是图像的尺寸不是我在代码中定义的尺寸:

$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Water_Level');
$objDrawing->setDescription('Water_Level');
$objDrawing->setPath('img/logo-rab.jpg');
$objDrawing->setHeight(74);
$objDrawing->setCoordinates('A1');
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());

这张图像远高于74个像素。尝试增加高度和宽度,但始终相同。

你能帮我如何在我的XLS中添加图像吗?我在PHP代码中定义了尺寸?

提前谢谢!

您是否尝试过使用setWidthAndHeight并将ResizeProportional设置为true?

$objDrawing->setWidthAndHeight(148,74);
$objDrawing->setResizeProportional(true);

我尝试过不同的方法,但excel自动强制设置图像比例。无论如何,我解决了它,首先设置为假"调整大小比例",然后为图像设置自定义宽度

/* ADD LOGO */
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath('../images/logoexcel.png');
$objDrawing->setCoordinates('A1');
// set resize to false first
$objDrawing->setResizeProportional(false);
// set width later
$objDrawing->setWidth(45);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objPHPExcel->getActiveSheet()->getRowDimension(1)->setRowHeight(35);
/* END LOGO */

这里也有同样的问题,对我来说,我必须在像这样设置setImageResource之后设置var

        ... 
        $this->objPHPExcel->getActiveSheet()->SetCellValue($index, $entry);
        $this->gdImage = imagecreatefromjpeg('/path/img.jpg');
        $this->objDrawing->setCoordinates('C1');
        ...
        }

        function save_excel(){
        $this->objDrawing->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_JPEG);
        $this->objDrawing->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_DEFAULT);    
        $this->objDrawing->setImageResource($this->gdImage);
        $this->objDrawing->setHeight(100);  

在PhpSpreadSheet中类似于PHPExcel:

$drawing = new Drawing();
$drawing->setName( $name );
$drawing->setDescription( $name );
$drawing->setPath( $path );
$drawing->setWorksheet( $sheet );
$drawing->setCoordinates( $cell );
$drawing->setHeight(100);
$drawing->setResizeProportional(true);

加上这个,这可能会起的作用

$objDrawing->setOffsetX(110);