phpexcel圖形圖表(二)圖形


原創文章,轉載請注明出處:http://www.cnblogs.com/phpgcs

 

 

本篇文章實例演示如上圖,畫3種圖形以及多sheet操作等

 

先回憶下第一篇中line圖形的API調用步驟:

1,引入PHPExcel
2,填充源數據到工作表上
	$objWorkSheet->fromArray($array);
	or
	$objWorkSheet->setCellValues('A1', 1);
3,設置dataseries
	PHPExcel_Chart_DataSeries::TYPE_LINECHART,
	PHPExcel_Chart_DataSeries::GROUPING_STACKED,
	range(0, count($dataSeriesValues)-1),
	$dataseriesLabels=>array(new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$AB$1', NULL, 1)),
	$xAxisTickValues=>array(new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$AA$2:$AA$21', NULL, 20),),
	$dataSeriesValues=>array(new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$AB$2:$AB$21', NULL, 20))
4,設置chart
	'chartTitle'=>'just a title',
	$title=>new PHPExcel_Chart_Title('新聞熱點趨勢'),
	$legend=>new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_TOPRIGHT, NULL, false),
	$plotarea=>new PHPExcel_Chart_PlotArea(NULL, array($series)),
	'plotVisibleOnly'=>true,
	'displayBlanksAs'=>0,
	'xAxisLabel'=>NULL,
	'yAxisLabel'=>new PHPExcel_Chart_Title('報道量'),
5,設置chart位置
	$chart->setTopLeftPosition('A1');                                                                                                                 
	$chart->setBottomRightPosition('P20');
6,添加chart
    $objWorksheet->addChart($chart);
7,保存文件
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
	$objWriter->setIncludeCharts(TRUE);
	$objWriter->save(str_replace('.php', '.xlsx', __FILE__));

  

上面是一個完整的 line chart 的API

對於 bar chart 來說,不同的地方有: 

1,$series 的第一個參數 改為 PHPExcel_Chart_DataSeries::TYPE_BARCHART,

2,增加一個畫圖的方向設置 $series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_BAR);

 原創文章,轉載請注明出處:http://www.cnblogs.com/phpgcs

對於 pie chart 來說,不同的地方有: 

1,$series 的第一個參數 改為PHPExcel_Chart_DataSeries::GROUPING_STACKED,

2,增加一個畫圖的方向設置 $series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_PIE);

 

 

對於 radar chart 來說, 不同 的地方有:

1,$series 的第1個參數 改為 PHPExcel_Chart_DataSeries::TYPE_RADARCHART,

2,$series 的第2個參數 改為 NULL

3,$series 增加第5個參數 NULL, 意味着 雷達的連線為平滑的

4,$series 增加第6個參數 PHPExcel_Chart_DataSeries::STYLE_MARKER 

5,$plotarea 的第1個參數 為 $layout = new PHPExcel_Chart_Layout();

6,$chart 第8個參數 yAxisLabel 設置為NULL,因為雷達圖沒有Y軸

 

上面就是API的區別,下面說說在一個Sheet上作圖的注意事項:

1,首先,你的源數據一般不想讓一打開就看到,那就將其放置到AA列之后,這樣A~Z列都看不到源數據

$objWorksheet->fromArray($newarraydata, NULL, 'AA1');  

  當然,取數據的時候也要從AA開始取

2,如果想要做多個chart在一個sheet上,還需要為每個chart指定區域

$chart->setTopLeftPosition('A1');                                                                                                                      
$chart->setBottomRightPosition('N20');

$chart2->setTopLeftPosition('A21');                                                                                                                      
$chart2->setBottomRightPosition('G40');


$chart3->setTopLeftPosition('H21');                                                                                                                      
$chart3->setBottomRightPosition('N40');

  

3,對於多個sheet上操作,注意切換sheet

$objWorksheet = $objPHPExcel->getActiveSheet(); //獲取當前活動表

$objPHPExcel->createSheet(); //創建一個sheet                                                            
$objPHPExcel->setActiveSheetIndex(1);//激活第2個sheet

  原創文章,轉載請注明出處:http://www.cnblogs.com/phpgcs


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM