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++是什么,我们也安装了适 ...
随机推荐
- 从生成文件对比两种创建虚拟机的方式:boot from image和boot from bootable-volume
1. 创建bootable-volume(参考:http://docs.openstack.org/grizzly/openstack-compute/admin/content/instance-c ...
- java注解的基本知识
1: 注解:Annotation是一种应用于类.方法.参数.变量.构造器及包生命中的特殊修饰符,是一种由JSR-175标准选择用来描述代码的元数据. Java中如下的4种注解,专门负责新注解的创建: ...
- 愚人的linux内核2440移植札记(超曲折版)
http://blog.csdn.net/dreambegin/article/details/6904822 原来文章叫--编译内核之初体验.后来想了想,这篇文章让我体验了好多遍.不该叫这么大气的名 ...
- Python错误处理和调试
错误处理(try...except...finally...) try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivis ...
- C#读写.ini文件
转载来源: http://blog.csdn.net/source0573/article/details/49668079 https://www.cnblogs.com/wang726zq/arc ...
- ML 徒手系列 SVM
在Lagrange乘子法中,介绍了如何构建及如何使用对偶函数,对目标问题进行求解. 这一章利用L乘子法对SVM进行推导. SVM 即支持向量机,是通过求解超平面进行分类的一种算法.所谓的支持向量,是在 ...
- Java之反射(部分文档摘过来方便以后查看)
第1章 类加载器 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. l 加载 就是指将class文件读入内存,并为之创建 ...
- Python脚本打包为exe文件
本文转载自http://www.open-open.com/lib/view/open1342675735745.html 把用Python写好的脚本,可以用pyinstaller打包成.exe文 ...
- keras安装windows版
按照官网成功了.下面没有成功,貌似是 Anacode的问题 http://blog.csdn.net/hweiyi/article/details/70018317 http://blog.csdn. ...
- PAM认证
PAM认证 摘自: http://www.cnblogs.com/shenxm/p/8451889.html PAM(Pluggable Authentication Modules) Sun公司于1 ...