PHPExcel探索之旅---阶段三 绘制图表
2024-09-23 19:33:00
利用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添加到表格中
最新文章
- 移动端web开发,click touch tap区别
- ie 8 下post提交提交了两次
- C#之使用NotifyIcon实现任务栏托盘菜单,图标闪烁效果及气泡提示
- 为什么上传文件的表单里要加个属性enctype
- ArcGIS提取影像边界
- Linux root 密码重置与用户管理
- 在Eclipse中设置Java类上面的注释(包含作者、日期等)
- Notes of Linked Data concept and application - TODO
- EnumWindows 使用
- Linux SendMail 使用外部SMTP服务发送邮件
- [C#错误]	未找到类型或命名空间名称"; "; (是否缺少 using 指令或程序集引用?)
- C++格式化字符函数
- php----浅谈一下empty isset is_null的用处
- leetCode解题报告5道题(六)
- c: c代码书写规范
- SAE+Java+jetty
- 找回mysql数据库root用户的密码
- Linux scp 命令卡住的原因
- RVIZ实现模拟控制小车
- 自用IP查询网址 - 地址 - 归属地 - 地理位置 - 2017.5