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
phpexcel图形图表(二)图形的更多相关文章
- phpexcel图形图表(一)入门
PHPExcel - Excel的PHP处理引擎 PHPExcel 提供了一系列的 PHP语言 类,让你可以轻松地读写操作以下格式的文件:.xls/.xlsx/.csv/.ods/Gnumeric/P ...
- R提高篇(二): 图形初阶
目录: 图形示例 图形参数 符号.线条 颜色 文本属性 尺寸与边界 自定义标题 自定义坐标轴 图例 文本标注 图形组合 图形示例 如下代码描述病人对两种药物五个剂量水平上的响应情况 > myda ...
- linux入门教程(二) 图形界面还是命令窗口
对于linux的应用,我想大多数都是用在服务器领域,对于服务器来讲真的没有必要跑一个图形界面.所以我们平时安装linux操作系统时往往是不安装图形界面的.说到这里也许你会有疑问,图形界面还能选择装或者 ...
- 201771010126 王燕《面向对象程序设计(Java)》第十二周学习总结
实验十二 图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: 创建空框架 . 在Java中,常采用框架(Frame) ...
- 马凯军201771010116《面向对象与程序设计Java》第十二周学习总结
一.理论与知识学习部分 Java的抽象窗口工具箱(Abstract Window Toolkit, AWT)包含在java.awt包中,它提供了许多用来设计GUI的组件类和容器类. 大部分AWT组件都 ...
- 刘志梅2017710101152.《面向对象程序设计(java)》第十二周学习总结
实验十二 图形程序设计 实验时间 2018-11-14 1.理论知识 (1) 基本AWT库采用将处理用户界面元素的任务委派给每个目标平台的本地GUI工具箱的方式,由本地GUI工具箱负责用户界面元素的 ...
- 201771010134杨其菊《面向对象程序设计java》第十二周学习总结
第十二周学习总结 第一部分:理论知识 内容概要: AWT与Swing简介:框架的创建:图形程序设计: 显示图像: 1.AWT组件: 2.Swing 组件层次关系 3 .AWT与Swing的关系:大部分 ...
- 达拉草201771010105《面向对象程序设计(java)》第十二周学习总结
达拉草201771010105<面向对象程序设计(java)>第十二周学习总结 第一部分:理论知识 Java的抽象窗口工具箱(AbstractWindow Toolkit,AWT)包含在j ...
- 第十二周java实验作业
实验十二 图形程序设计 实验时间 2018-11-14 1.实验目的与要求 (1) 掌握Java GUI中框架创建及属性设置中常用类的API: Java的集合框架实现了对各种数据结构的封装. jav ...
随机推荐
- jeeplus中两个项目redis冲突问题
修改端口号[两个项目使用不同的database]
- 上手 Webpack ? 这篇就够了!
JavaSript 模块化打包已混迹江湖许久.2009年,RequireJS 就提交了它的第一个版本,Browserify 接踵而至,随后其他打包工具也开始大行其道.最终,Webpack 从其中脱颖而 ...
- Debian6 安装Kscope(也适用于Ubuntu)
参考:http://soft.chinabyte.com/os/134/12307634.shtml kscope1.6.2在这里下载,下载后解压出kscope-1.6.2.tar.gz. 在ubun ...
- LiDAR Textbook & Automated Road Network Extraction
Original article published here, Posted on March 18, 2009 by lidar A positive feedback loop is begin ...
- 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大 ...
- Android 中 Environment.getExternalStorageDirectory()无效
我们在处理缓存的时候,并不是每次都会在应用私有存储空间那里保存,很多时候是需要用到ExternalStorage.我们平时一般都是用Environment.getExternalStorageDire ...
- 基于CentOS与VmwareStation10搭建Oracle11G RAC 64集群环境:3.安装Oracle RAC-3.1.安装并配置ASM驱动
3.1.安装并配置ASM驱动 3.3.1.检查内核 [root@linuxrac2 etc]# uname -r 2.6.18-164.el5 下载以下rpm包(注意rpm包版本和Linux内核版本一 ...
- asp.net购物车,订单以及模拟支付宝支付(一)---购物车表及添加购物车流程
在开发一个Web程序的时候用到了网购这个功能,上来分享并记录一下,以便以后忘记了可以自己看看(电脑东西太多,笔记都不知道放哪里去了啊啊啊啊啊!!!) 没有什么高并发量,什么什么技术理论,只是一个最最基 ...
- python abstractmethod 对象比较
from functools import total_ordering from abc import ABCMeta,abstractmethod @total_ordering class Sh ...
- ssh中使用spring的集成quartz 编写定时任务
之前没有使用框架开发时对于开发定时任务都是 使用java的原声timer类,重写线程的run方法跑要执行的任务.刚刚换的新公司,项目使用ssh2,目前该项目中的定时任务的使用spirng集成的quar ...