我想使用PHPExcel将excel文件中已存在的一些图表保存为图像文件(另存为图像)。
这是否可行,并且任何人都可以指向我一些示例代码,因为Google结果只会带回代码以从数字数据生成新图表。
答案 0 :(得分:1)
您应该查看/ Tests目录中的示例35chartrender.php,它完全符合您的要求。基本上这一切都归结为$chart->render($jpegFileName);
。我不认为有任何方法可以将图表呈现为除jpeg以外的任何其他内容,但您可以随时向专家询问http://phpexcel.codeplex.com/。
答案 1 :(得分:0)
如果这些是实际图像而不是MS Excel图表,那么请查看开发人员文档的第4.6.37节,标题为“从工作表中读取图像”:
$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);
}
如果它们是实际的MS Excel图表,那么(正如Technoh建议的那样)图表render()方法如示例35chartrender.php中所示将使用jpgraph从该图表定义创建图像文件。