$objPHPExcel->getActiveSheet()->getDrawingCollection()
将返回当前工作表中所有图像对象的ArrayObject。
这些对象将是PHPExcel_Worksheet_Drawing或PHPExcel_Worksheet_MemoryDrawing对象:您可以使用[is_a()]()来识别它们。 然后,您可以使用适用于该类的方法(如API中所述)从文件(对于PHPExcel_Worksheet_Drawing对象)读取图像数据,或直接从PHPExcel_Worksheet_MemoryDrawing对象本身读取。 getName()和getDescription()方法可用于检索图像对象的相关值。
请注意,也可能存在与打印标题相关联的图像对象。
$objPHPExcel->getActiveSheet()->getHeaderFooter()->getImages()
可以用来从页眉/页脚检索图像。这是一个 PHPExcel_Worksheet_HeaderFooterDrawing 对象数组。所有 PHPExcel_Worksheet_Drawing 方法都可以用来从这些对象中提取图像文件。
编辑
开始讲解。
以下代码将从当前活动工作表中提取所有图像,并将它们写入服务器上的文件。
$objPHPExcel = PHPExcel_IOFactory::load($path);
$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();
switch ($drawing->getMimeType()) {
case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG :
$extension = 'png'; break;
case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_GIF:
$extension = 'gif'; break;
case PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG :
$extension = 'jpg'; break;
}
} 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);
}
文件命名
00_Image_n.extension
其中n是从1开始的数字,而extension则是适用于图像类型的相应扩展名(png,jpg,gif等)。