在PHPExcel中检索图像

Sal*_*man 6 php phpexcel


我想使用PHPExcel从excel文件读取/检索图像到PHP.此代码用于从特定单元格检索值.

    $objPHPExcel->getActiveSheet()->getCell('B5')->getValue();
Run Code Online (Sandbox Code Playgroud)

这只检索单元格值,但我无法检索图像.有没有办法做到这一点?

Dav*_*dom 8

谷歌搜索phpexcel read image产生了这个页面作为第二个结果.它告诉你如何做到这一点.

直接引用相关信息:

$objPHPExcel->getActiveSheet()->getDrawingCollection() 将返回活动工作表中所有图像对象的ArrayObject.

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

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

$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages() 可用于从页眉/页脚中检索图像.这是一个PHPExcel_Worksheet_HeaderFooterDrawing对象数组.所有PHPExcel_Worksheet_Drawing方法都可用于从这些对象中提取图像文件.


小智 6

检查此示例.我发现它很有用..

$objPHPExcel = PHPExcel_IOFactory::load($_FILES['archivo']['tmp_name']);

$i = 0;
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();
        $extension = 'png';
    } else {
        $zipReader = fopen($drawing->getPath(),'r');
        $imageContents = '';

        while (!feof($zipReader)) {
            $imageContents .= fread($zipReader,1024);
        }
        fclose($zipReader);
        $extension = $drawing->getExtension();
    }
    $myFileName = '00_Image_'.++$i.'.'.$extension;
    file_put_contents($myFileName,$imageContents);
}
Run Code Online (Sandbox Code Playgroud)

资料来源: http ://phpexcel.codeplex.com/workitem/18189