PHPExcel生成图表(转载) - 暗夜妖姬

时间:2024-03-17 22:29:39

PHPExcel生成图表(转载)

PHPExcel下载

生成折线图示例:

<?php  
    $dir = dirname(__FILE__);  
    require $dir."/db.php";  
    require $dir."/PHPExcel.php";  
  
    $db = new db($phpexcel);  
    $objPHPExcel = new PHPExcel();  
    $objSheet = $objPHPExcel->getActiveSheet();  
  
    $data = array(  
        array("","一班","二班","三班"),  
        array("不及格",20,30,40),  
        array("良好",30,50,70),  
        array("优秀",14,12,30)  
    );  
    $objSheet->fromArray($data);  
  
    //图表  
    $labels = array(  
        new PHPExcel_Chart_DataSeriesValues(\'String\',\'Worksheet!$B$1\',null,1),//一班  
        new PHPExcel_Chart_DataSeriesValues(\'String\',\'Worksheet!$C$1\',null,1),//二班  
        new PHPExcel_Chart_DataSeriesValues(\'String\',\'Worksheet!$D$1\',null,1),//三班  
    );  
    $xLabels = array(  
        new PHPExcel_Chart_DataSeriesValues(\'String\',\'Worksheet!$A$2:$A$4\',null,3),//取x轴刻度  
    );  
    $datas = array(  
        new PHPExcel_Chart_DataSeriesValues(\'Number\',\'Worksheet!$B$2:$B$4\',null,3),//取一班数据  
        new PHPExcel_Chart_DataSeriesValues(\'Number\',\'Worksheet!$C$2:$C$4\',null,3),//取二班数据  
        new PHPExcel_Chart_DataSeriesValues(\'Number\',\'Worksheet!$D$2:$D$4\',null,3),//取三班数据  
    );  
  
    $series = array(  
        new PHPExcel_Chart_DataSeries(  
            PHPExcel_Chart_DataSeries::TYPE_LINECHART,  
            PHPExcel_Chart_DataSeries::GROUPING_STANDARD,  
            range(0, count($labels)-1),  
            $labels,  
            $xLabels,  
            $datas  
        )  
    ); //图表框架  
  
    $layout=new PHPExcel_Chart_Layout();  
    $layout->setShowVal(true);  
    $areas = new PHPExcel_Chart_PlotArea($layout,$series);  
    $legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,$layout,false);  
    $title = new PHPExcel_Chart_Title("高一学生成绩分布");  
    $ytitle = new PHPExcel_Chart_Title("人数");  
    $chart = new PHPExcel_Chart(\'line_chart\',$title,$legend,$areas,true,false,null,$ytitle);  
    $chart->setTopLeftPosition("A7")->setBottomRightPosition("K25"); //图表位置  
  
    $objSheet->addChart($chart);  
  
  
    $excel = \'Excel2007\';  
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,$excel);  
    $objWriter->setIncludeCharts(true); //图表必须  
    // $objWriter->save($dir.\'/export.xls\'); //生成excel文件  
    browser_export($excel,"browser_chart.xlsx"); //浏览器输出  
  
    SaveViaTempFile($objWriter);  
  
    function browser_export($type, $filename){  
        if($type == "Excel5"){  
            header(\'Content-Type: application/vnd.ms-excel\'); //excel2003  
        }else{  
            header(\'Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\'); //excel2007  
        }  
        header(\'Content-Disposition: attachment;filename="\'.$filename.\'"\');  
        header(\'Cache-Control: max-age=0\');  
    }  
  
    /*解决Excel2007不能导出*/  
    function SaveViaTempFile($objWriter){  
        $filePath = dirname(__FILE__) . rand(0, getrandmax()) . rand(0, getrandmax()) . ".tmp";  
        $objWriter->save($filePath);  
        readfile($filePath);  
        unlink($filePath);  
    }  

效果图: