phpexcel图形图表(二)图形
原创文章,转载请注明出处:http://www.cnblogs.com/phpgcs
本篇文章实例演示如上图,画3种图形以及多sheet操作等
先回忆下第一篇中line图形的API调用步骤:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 |
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列都看不到源数据
1 |
$objWorksheet ->fromArray( $newarraydata , NULL, ‘AA1‘ ); |
当然,取数据的时候也要从AA开始取
2,如果想要做多个chart在一个sheet上,还需要为每个chart指定区域
1
2
3
4
5
6
7
8
9 |
$chart ->setTopLeftPosition( ‘A1‘ ); $chart ->setBottomRightPosition( ‘N20‘ ); $chart2 ->setTopLeftPosition( ‘A21‘ ); $chart2 ->setBottomRightPosition( ‘G40‘ ); $chart3 ->setTopLeftPosition( ‘H21‘ ); $chart3 ->setBottomRightPosition( ‘N40‘ ); |
3,对于多个sheet上操作,注意切换sheet
1
2
3
4 |
$objWorksheet
= $objPHPExcel ->getActiveSheet(); //获取当前活动表 $objPHPExcel ->createSheet(); //创建一个sheet $objPHPExcel ->setActiveSheetIndex(1); //激活第2个sheet |
原创文章,转载请注明出处:http://www.cnblogs.com/phpgcs
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。