PHPExcel探索之旅---阶段三 绘制图表
利用PHPExcel插件进行绘制图表
<?php
/**
* 使用PHPExcel插件在excel文件中利用其中的数据建立折线图
* */
$dir = dirname(__FILE__); require $dir."/db.php";
require $dir."/PHPExcel/PHPExcel.php"; $db = new db($phpexcel);//实例化的db类 连接mysql数据库
$objPHPExcel = new PHPExcel();//新建一个PHPEXcel对象
$objSheet = $objPHPExcel -> getActiveSheet();
//填充数据
$array = array(
array("","一班","二班","三班"),
array("不及格",20,30,40),
array("良好",30,50,55),
array("优秀",15,17,20)
);//准备数据
$objSheet -> fromArray($array);//直接加载数组
//开始图表代码练习
$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!$A2:$A$4',null,3)//取得图像x轴的刻度
); $datas = array(
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$B2:$B$4',null,3),
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$C2:$C$4',null,3),
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$D2:$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);
$ytitle = new PHPExcel_Chart_Title("value(人数)");
$areas = new PHPExcel_Chart_PlotArea($layout,$series);
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,null,false);
$title = 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);//将chart添加到表格中 $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,"Excel2007");//生成excel文件
$objWriter -> setIncludeCharts(true);
$objWriter -> save($dir."/export_chart.xlsx");//保存到当前目录下面 //将Excel文件以浏览器下载的方式输出到浏览器
browser_export('Excel2007', 'browser_excel03.xlsx');
$objWriter -> save("php://output");//输出到浏览器 //输出到浏览器的函数
function browser_export($type,$filename){
if("Excel5" == $type){
header('Content-Type: application/vnd.ms-excel');//告诉浏览器将要输出Excel03文件
}else{
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');//告诉浏览器将要输出Excel07文件
}
header('Content-Disposition: attachment;filename="'.$filename.'"');//告诉浏览器将要输出文件的名称
header('Cache-Control: max-age=0');//禁止缓存
}
chart.php
首先获取绘制图表的标签、x轴的刻度、绘图所需要的数据,都是以数组形式存在的,用到的是新建对象
new PHPExcel_Chart_DataSeriesValues('数据类型','单元格范围',null,数据个数)
$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!$A2:$A$4',null,3)//取得图像x轴的刻度
); $datas = array(
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$B2:$B$4',null,3),
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$C2:$C$4',null,3),
new PHPExcel_Chart_DataSeriesValues('Number','Worksheet!$D2:$D$4',null,3)
);//取得绘图所需的数据
然后根据取得的东西做出一个图表的框架 需要建立一个新对象PHPExcel_Chart_DataSeries 其中的参数很多,可以参照API中的classes文件夹中的文件
$series = array(
new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_LINECHART,
PHPExcel_Chart_DataSeries::GROUPING_STANDARD,
range(0, count($labels) - 1),
$labels,
$xlabels,
$datas
)
);//根据取得的东西做出一个图表的框架
再次,生成图表,对图表进行一系列的设置,用到的函数很多查看API
//设置在每个点上显示数据的值
$layout = new PHPExcel_Chart_Layout();
$layout -> setShowVal(true); $ytitle = new PHPExcel_Chart_Title("value(人数)");//设置在y轴上显示的备注
$areas = new PHPExcel_Chart_PlotArea($layout,$series);
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,null,false);//设置标签靠右显示
$title = new PHPExcel_Chart_Title("高一学生成绩分布");//设置图表的标题
$chart = new PHPExcel_Chart(
'line_chart',
$title,
$legend,
$areas,
true,
false,
null,
$ytitle
);//生成图表
最后设置图表在表格中的位置 用到的函数就是setTopLeftPosition("A7") -> setBottomRightPosition("K25")
将图表添加到表格中用到的函数为addChart
$chart -> setTopLeftPosition("A7") -> setBottomRightPosition("K25");//给定图表在表格中的位置
$objSheet -> addChart($chart);//将chart添加到表格中
PHPExcel探索之旅---阶段三 绘制图表的更多相关文章
- PHPExcel探索之旅---阶段四 导入文件
步骤就是:实例化excel读取对象=> 加载excel文件 => 读取excel文件(全部读取.逐行读取) <?php header("Content Type :text ...
- PHPExcel探索之旅---阶段二 设置表格样式
1.设置表格的默认样式为水平居中.垂直居中 getDefaultStyle()函数用来设置默认样式 由活动sheet对象来调用,setVertical()函数和setHorizontal()函数分别用 ...
- PHPExcel探索之旅---阶段一
类似于Java,php也有操作Excel的方法,其中需要下载PHPExcel插件,将其中的Classes文件夹改名为PHPExcel并提取到根文件夹外面,将两个文件夹一起放在所需项目中 使用PHPEx ...
- PHPExcel探索之旅
学习地址: https://www.imooc.com/video/8359 下载地址: https://packagist.org/packages/phpoffice/phpexcel 用comp ...
- WCF探索之旅(三)——IIS公布WCF服务
在之前的博客已经对WCF的基础知识做了介绍.而且做了一个简单的小样例. 假设你看了之前的博客,相信你已经对WCF有了一定的掌握.这篇博客主要说一下怎样把WCF服务公布的IISserver上. 在上篇博 ...
- 【C语言探索之旅】 第三部分第二课:SDL开发游戏之创建窗口和画布
内容简介 1.第三部分第二课: SDL开发游戏之创建窗口和画布 2.第三部分第三课预告: SDL开发游戏之显示图像 第三部分第二课:SDL开发游戏之创建窗口和画布 在上一课中,我们对SDL这个开源库做 ...
- 【Web探索之旅】第三部分第一课:服务器
内容简介 1.第三部分第一课:服务器 2.第三部分第二课预告:IP地址和域名 第三部分第一课:服务器 大家好,欢迎来到[Web探索之旅]的第三部分.这一部分有不少原理,还是很重要的. 这一部分我们会着 ...
- 【Web探索之旅】第三部分第二课:IP地址和域名
内容简介 1.第三部分第二课:IP地址和域名 2.第三部分第三课预告:协议 第三部分第二课:IP地址和域名 上一课我们说了在Web之中,全球各地有无数台机器,有些充当客户机,有些作为服务器. 那么这些 ...
- 【C++探索之旅】第一部分第三课:第一个C++程序
内容简介 1.第一部分第三课:第一个C++程序 2.第一部分第四课预告:内存的使用 第一个C++程序 经过上两课之后,我们已经知道了什么是编程,编程的语言,编程的必要软件,C++是什么,我们也安装了适 ...
随机推荐
- JS undefined
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义.典型用法是: (1)变量被声明了,但没有赋值时,就等于undefined. (2) 调用函数时,应该提供的参 ...
- Maven运行JUnit测试(http://www.360doc.com/content/13/0927/15/7304817_317455642.shtml)
Maven单元测试 分类: maven 2012-05-09 15:17 1986人阅读 评论(1) 收藏 举报 maven测试junit单元测试javarandom 目录(?)[-] maven ...
- binlog之二:怎么样安全删除mysql下的binlog日志
删除binlog方法 第一种方法: mysql> show binary logs; 查看mysql bin-log日志,除了这个以外的,其它都可以使用删除.mysql> purge bi ...
- JAVA 1.5 并发之 Executor框架 (内容为转载)
本文内容转自 http://www.iteye.com/topic/366591 Executor框架是指java 5中引入的一系列并发库中与executor相关的一些功能类,其中包括线程池,Exec ...
- 杂项:zabbix(WEB界面的提供分布式系统监视以及网络监视功能)
ylbtech-杂项:zabbix(WEB界面的提供分布式系统监视以及网络监视功能) zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.z ...
- HTML5小知识
1.HTML5一种“妥协的”语法 2.特点: 标签不区分大小写 元素可以省略结束标签 元素属性可以省略属性值 属性的属性值可以不适用引号
- Java探索之旅(4)——方法和Random&Math类
1.基本知识点 ❶方法在C++里面称为函数.调用方法时,应该类型兼容--即不需显式类型转换即可将形参传递给实参. ❷形参的改变不影响实参的值. ❸Java注重模块化设计和自顶向下的设 ...
- R: which(查询位置)、%in% (是否存在)、ifelse(判断是否):
################################################### 问题:ifelse.which.%in% 18.4.27 解决方案: > x < ...
- 30、 bowtie和bowtie2使用条件区别及用法
转载:http://blog.csdn.net/soyabean555999/article/details/62235577 一.转录组还是基因组? map常用的工具有bowtie/bowtie2, ...
- ubuntu中解决/usr/bin/ld: cannot find -lxxx
解决/usr/bin/ld: cannot find -lxxx 在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息:/usr/bin/ld: cannot fin ...