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++是什么,我们也安装了适 ...
随机推荐
- poj2395
#include<iostream> #include<cstdio> #include<algorithm> #include<cstdlib> ...
- 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 ...
- 简单的RBAC用户角色权限控制
Java web项目中,无论项目是大是小,或多或少都会涉及到用户访问权限的控制,权限管理总体的设计思路就是,不该看的不看,不该做的不做!据我目前的了解,我所知道的几种实现访问权限控制的方式有: JQu ...
- Guice 学习
Guice: 是一个轻量级的DI框架. 不需要繁琐的配置,只需要定义一个Module来表述接口和实现类,以及父类和子类之间的关联关系的绑定,如下是一个例子. http://blog.csdn.net/ ...
- “box-shadow”属性(转)
“box-shadow”属性 box-shadow属性是一个CSS3属性,允许我们在几乎任何元素上来创建阴影效果,类似于在设计软件中的”drop shadow”.这些阴影效果允许我们在原本平面的.二维 ...
- Angular13 Angular2发送PUT请求在后台接收不到参数
1 问题描述 利用angular2发送PUT请求时,后端接收不到参数 2 问题诊断 前段参数格式问题,后端获取参数的方法不对 3 解决问题 angular前段:将所有参数编程JSON字符串形式 spr ...
- 自定义map对象,用于再不支持es6的map的时候
function Map() { this.elements = new Array(); // 获取Map元素个数 this.size = function ...
- UVa 11468 Substring (AC自动机+概率DP)
题意:给出一个字母表以及每个字母出现的概率.再给出一些模板串S.从字母表中每次随机拿出一个字母,一共拿L次组成一个产度为L的串, 问这个串不包含S中任何一个串的概率为多少? 析:先构造一个AC自动机, ...
- Java Script 学习笔记 -- Ajax
AJAX 一 AJAX预备知识:json进阶 1.1 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON是用字符串来表示Javas ...
- nej 搭配 vue 方案
此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言 目前项目使用的技术是 nej + regular,路由方面是使用 nej 自带的,随着时间推移,项目已经 ...