PHPExcel生成图表

生成折线图示例:

<?php  
    $dir = dirname(__FILE__);
    require $dir."/PHPExcel.php";  
    $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),//取三班数据  
    );  
    
    //TYPE_BARCHART 柱线图
    //TYPE_LINECHART 折线图
    $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);  
    }

目前没解决的问题表格的数据不能带逗号和其他特殊的符号。

标签:

发表评论