使用PHP在Excel文件(xls)中提取图片/图像

Sam*_*ron 6 php phpexcel

我有一个电子表格,我想用PHP导入.我可以使用PHPExcel导入单元格数据,但无法弄清楚如何使用电子表格中的图像.

有没有办法做到这一点然后使用PHP中的图像保存到服务器等?

非常感谢您的帮助!:)


更新:

@ mark-baker - 非常感谢你对此的帮助!

我在一个带有一个JPG的测试XLS文件中使用了下面的代码:

$objPHPExcel = PHPExcel_IOFactory::load("SH.xls");

foreach ($objPHPExcel->getActiveSheet()->getDrawingCollection() as $drawing) {
    if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
        ob_start();
        call_user_func(
            $drawing->getRenderingFunction(),
            $drawing->getImageResource()
        );
        $imageContents = ob_get_contents();
        ob_end_clean();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想我可以输出JPEG标题和$imageContents显示图像的内容.

我如何获得电子表格中图像的实际名称,例如"Picture1"?PHPExcel_Worksheet_MemoryDrawing可以实现吗?

我不能够感谢你!

Mar*_*ker 4

有人,我不知道是不是你自己,在 PHPExcel 板上提出了类似的问题......我还没有时间回答。

$objPHPExcel->getActiveSheet()->getDrawingCollection()
Run Code Online (Sandbox Code Playgroud)

将返回活动工作表中所有图像对象的 ArrayObject。

这些对象将是 PHPExcel_Worksheet_Drawing 或 PHPExcel_Worksheet_MemoryDrawing 对象:您可以使用is_a()来识别哪个对象。然后,您可以使用适合该类的方法(如 API 中所述)从文件(对于 PHPExcel_Worksheet_Drawing 对象)或直接从 PHPExcel_Worksheet_MemoryDrawing 对象本身读取图像数据。getName() 和 getDescription() 方法可用于检索图像对象的相关值。

请注意,也可以将图像对象与打印标题关联:

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages()
Run Code Online (Sandbox Code Playgroud)

可用于从页眉/页脚检索图像。这是 PHPExcel_Worksheet_HeaderFooterDrawing 对象的数组。所有 PHPExcel_Worksheet_Drawing 方法都可用于从这些对象中提取图像文件。

编辑

根据修改后的问题中的代码:

$drawing->getName();
Run Code Online (Sandbox Code Playgroud)

应该给你你需要的东西