PhpExcel - 如何显示或导出excel中已有的图表

时间:2013-08-27 12:24:34

标签: phpexcel

我想使用PHPExcel将excel文件中已存在的一些图表保存为图像文件(另存为图像)。

这是否可行,并且任何人都可以指向我一些示例代码,因为Google结果只会带回代码以从数字数据生成新图表。

2 个答案:

答案 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从该图表定义创建图像文件。