将远程图像添加到 PhpSpreadset 单元格

网站上有一个简单的两列表:产品名称和产品图片。在 HTML 中呈现非常容易。该任务将创建一个包含这些列的 Xlsx 文件。图像不存储在本地,但它们都是具有完整 URL 的远程图像。导出包含 ~100-200 行。

我尝试使用 imagecreatefromjpeg 创建资源并使用 MemoryDrawing 添加它,但它占用了大量资源。我尝试使用 Html 助手的 toRichTextObject 和一个简单的标签,但结果为空。

如何将远程图像添加到 PhpSpreadsheet 单元格?它不需要离线工作,打开文件时加载远程图像就可以了。


泛舟湖上清波郎朗
浏览 261回答 3
3回答

慕丝7291255

正如@FabriceFabiyi在他的评论中提到的,阅读后:关于绘图的PhpSpreadseet文档。关于file_get_contents的PHP 文档。关于file_set_contents的PHP 文档。这对我有用:$image = file_get_contents('https://website.com/path/to/image');$imageName = 'a_nice_image_name';//You can save the image wherever you want//I would highly recommand using a temporary directory$temp_image=tempnam(sys_get_temp_dir(), $imageName);file_put_contents($temp_image, $image);// And then PhpSpreadsheet acts just like it would do with a local image$drawing->setPath($temp_image);$drawing->setHeight(36);$drawing->setWorksheet($sheet);$drawing->setCoordinates('B15');有关 PHP 文档中临时目录的更多信息:sys_get_temp_dir()临时()

德玛西亚99

有一个示例如何将图像添加到您的 excel 导出中:$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();$drawing->setName('Paid');$drawing->setDescription('Paid');$drawing->setPath('/images/image-1.png'); // put your path and image here$drawing->setHeight(30);$drawing->setCoordinates('A5');$drawing->setOffsetX(110);$drawing->setRotation(25);$drawing->getShadow()->setVisible(true);$drawing->getShadow()->setDirection(45);$drawing->setWorksheet($spreadsheet->getActiveSheet());

一只斗牛犬

根据示例和文档,指定图像的坐标可能会有所帮助$objDrawing->setCoordinates('A3');请注意,图像不在单元格/列/行中,而是覆盖在与该单元格/列/行相同的位置的主工作表上
打开App,查看更多内容
随时随地看视频慕课网APP