0

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

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

4

2 回答 2

1

您应该查看 /Tests 目录中的示例 35chartrender.php,它完全符合您的要求。基本上这一切都归结为$chart->render($jpegFileName);. 我认为除了 jpeg 之外,没有其他方法可以将图表呈现为其他任何东西,尽管您可以随时在http://phpexcel.codeplex.com/上询问专家。

于 2013-08-27T13:14:26.193 回答
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 所建议的)示例 35chartrender.php 中演示的图表 render() 方法将使用 jpgraph 从该图表定义创建图像文件。

于 2013-08-28T09:45:16.643 回答