我想使用PHPExcel从excel文件读取/检索图像到PHP.此代码用于从特定单元格检索值.
$objPHPExcel->getActiveSheet()->getCell('B5')->getValue();
Run Code Online (Sandbox Code Playgroud)
这只检索单元格值,但我无法检索图像.有没有办法做到这一点?
谷歌搜索phpexcel read image产生了这个页面作为第二个结果.它告诉你如何做到这一点.
直接引用相关信息:
$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方法都可用于从这些对象中提取图像文件.
小智 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