生成折线图示例:
<?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);
}
目前没解决的问题表格的数据不能带逗号和其他特殊的符号。