php 图表的操作

<?php
	$dir=dirname(__FILE__);//查找当前脚本所在路径
	require $dir."/db.php";//引入mysql操作类文件
	require $dir."/PHPExcel/PHPExcel.php";//引入PHPExcel
	$db=new db($phpexcel);//实例化db类 连接数据库
	$objPHPExcel=new PHPExcel();//实例化PHPExcel类, 等同于在桌面上新建一个excel
	$objSheet=$objPHPExcel->getActiveSheet();//获得当前活动sheet
	/**本节课程代码编写开始**/
	$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!$A$2:$A$4‘,null,3)//取得图表X轴的刻度
	);
	$datas=array(
		new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$B$2:$B$4‘,null,3),//取一班的数据
		new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$C$2:$C$4‘,null,3),//取二班的数据
		new PHPExcel_Chart_DataSeriesValues(‘Number‘,‘Worksheet!$D$2:$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);
	$areas=new PHPExcel_Chart_PlotArea($layout,$series);
	$legend=new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT,$layout,false);
	$title=new PHPExcel_Chart_Title("高一学生成绩分布");
	$ytitle=new PHPExcel_Chart_Title("value(人数)");
	$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_1.xls");//保存文件
	browser_export(‘Excel2007‘,‘browser_chart.xlsx‘);//输出到浏览器
	$objWriter->save("php://output");

	function browser_export($type,$filename){
		if($type=="Excel5"){
				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‘);//禁止缓存
	}
?>

  

<?php
header("Content-Type:text/html;charset=utf-8");
$dir=dirname(__FILE__);//找到当前脚本所在路径
require $dir."/PHPExcel/PHPExcel/IOFactory.php";//引入读取excel的类文件
$filename=$dir."/export_1.xls";
$fileType=PHPExcel_IOFactory::identify($filename);//自动获取文件的类型提供给phpexcel用
$objReader=PHPExcel_IOFactory::createReader($fileType);//获取文件读取操作对象
$sheetName=array("2年级","3年级");
$objReader->setLoadSheetsOnly($sheetName);//只加载指定的sheet
$objPHPExcel=$objReader->load($filename);//加载文件
/**$sheetCount=$objPHPExcel->getSheetCount();//获取excel文件里有多少个sheet
for($i=0;$i<$sheetCount;$i++){
	$data=$objPHPExcel->getSheet($i)->toArray();//读取每个sheet里的数据 全部放入到数组中
	print_r($data);
}**/
foreach($objPHPExcel->getWorksheetIterator() as $sheet){//循环取sheet
		foreach($sheet->getRowIterator() as $row){//逐行处理
				if($row->getRowIndex()<2){
					continue;
				}
				foreach($row->getCellIterator() as $cell){//逐列读取
						$data=$cell->getValue();//获取单元格数据
						echo $data." ";
				}
				echo ‘<br/>‘;
		}
		echo ‘<br/>‘;
}
exit;
?>

  

时间: 2024-10-15 20:59:32

php 图表的操作的相关文章

图表插件--jqplot交互演示样例

简单交互 在之前的学习中,我们已经能够绘制各种类型的图表,也能够给图表加入不同的组件,如标题.图例等等.但这些图表仅仅能用于展示数据,一旦希望对图表有所操作--比方查看数据明细--就显得束手无策了.事实上jqPlot是提供了图表事件交互功能的,且实现起来,也相当的简单.接下来我们要做的就是,学习假设监听图表事件,并对事件进行处理. 在jqPlot的源代码中,我们可以看到这种代码片段: [javascript] view plaincopy ** * Class: jqPlot * Plot ob

图表插件--jqplot交互示例

简单交互 在之前的学习中,我们已经可以绘制各种类型的图表,也可以给图表添加不同的组件,如标题.图例等等.但这些图表只能用于展示数据,一旦希望对图表有所操作--比如查看数据明细--就显得束手无策了.其实jqPlot是提供了图表事件交互功能的,且实现起来,也相当的简单.接下来我们要做的就是,学习如果监听图表事件,并对事件进行处理. 在jqPlot的源码中,我们能够看到这样的代码片段: [javascript] view plaincopy ** * Class: jqPlot * Plot obje

D3.js系列——交互式操作和布局

一.图表交互操作 与图表的交互,指在图形元素上设置一个或多个监听器,当事件发生时,做出相应的反应. 交互,指的是用户输入了某种指令,程序接受到指令之后必须做出某种响应.对可视化图表来说,交互能使图表更加生动,能表现更多内容.例如,拖动图表中某些图形.鼠标滑到图形上出现提示框.用触屏放大或缩小图形等等. 用户用于交互的工具一般有三种:鼠标.键盘.触屏. 添加交互:对某一元素添加交互操作十分简单,代码如下: var circle = svg.append("circle"); circle

可视化工具solo show

辗转一圈还是回到了我魂牵梦绕的可视化上来了. 在Gephi+Netbeans上折腾了将近一个星期后,我深深的体会到个人对于代码的驾驭能力尚有提升的空间^_^,路很长,方向很重要,三思而行. 之前一个星期的研究体会如下: 1.作为一个可视化方向入门级菜鸟来说,靠一个人啃下gephi这个已经相对成熟的软件源码来说确有心有余而力不足之感. 2.Gephi是一个优秀的可视化软件,源于它的优秀的框架设计和代码编写.整个项目基于Netbeans platform开发,面向接口编程,模块之间耦合度低,体现了高

认识CoreData-基础使用

创建自带CoreData的工程 在新建一个项目时,可以勾选Use Core Data选项,这样创建出来的工程系统会默认生成一些CoreData的代码以及一个.xcdatamodeld后缀的模型文件,模型文件默认以工程名开头.这些代码在AppDelegate类中,也就是代表可以在全局使用AppDelegate.h文件中声明的CoreData方法和属性. 系统默认生成的代码是非常简单的,只是生成了基础的托管对象模型.托管对象上下文.持久化存储调度器,以及MOC的save方法.但是这些代码已经可以完成

21款酷炫的数据可视化工具

辛辛苦苦分析一堆大数据,竟然没人看!如果你正着手于从数据中洞察出有用信息,那你所需要的正是——数据可视化.俗话说,有图有真相,一图胜千言,取悦了眼球,剩下的都好说. 贵妃周一巨献!!挖掘了21款炙手可热的数据可视化工具,干净利落的高颜值信息图,就要这样做! FushionCarts FusionCharts Suite XT不仅可以为带给你漂亮的图表,还能帮你制作出生动的动画.巧妙的设计和丰富的交互性.它在PC端.Mac.iPad.iPhone和Android平台都可兼容,具有很好的用户体验一致

Android使用AChartEngine制作动态心电图效果

AChartEngine是一个很强大的图表引擎,我在上学的时候就接触过,并且利用它做了一个传感器的应用,想想现在也很久远了,今天就把这个app的源码贴出来供其他人研究这款引擎. app的效果如下: github项目地址:https://github.com/AlexZhuo/SensorMonitor 此APP的主要特性如下: 1.支持手机传感器数量探测,支持加速度,磁场,距离等传感器数据的实时获取 2.使用了一些github上的第三方控件来美化UI, 3.支持全屏显示 4.通过旧版的xUtil

iOS 使用Charts框架 折线,柱状,K线,饼状,雷达全攻略

我是前言: 大约几个月前我在某平台写了一篇文章, 文中简单地介绍了Charts两种图表的样式的使用, 不过有种意犹未尽的感觉, 利用周末的空闲时间再次看了看, 有了新的收获, 今天发出来,分享给大家, 来稍加详细的再次走进Charts的世界. 完全纯代码. 经过测试: 1.1使用cocoa pods集成(只能在9.3之后运行), 有知道原因的请在下方评论 1.2 这篇文章的例子我是使用手动加入的framework进行测试的. 如果你不清楚如何加入三方框架请点击看看这篇文章http://www.j

数据分析 关于基础组件与介绍

第二部分 关于基础组件与介绍 基础信息库种类 基础信息库是账户或者自然人的纯真数据库查询系统.系统内积累存储的数据包括有: ü 手机号归属信息 ü IP数据纯真库 ü GPS信息对应地址信息 ü 域名空间身份信息 ü 3G分组域通讯信息 ü VPN服务器基础信息 ü VPN服务器日志信息(最新的区域时间段) ü 国内运输系统基础数据 ü 网络帐号密码查询系统 ü 网络帐号详情搜索查询 3S定位技术 3S 是通过遥感技术(RS).地理信息系统(GIS).全球定位系统(GPS)实现位置确认技术的统称