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); }
效果图: