php excel导出柱状图,YII2框架下使用PHPExcel导出柱状图
导出结果:
首先,到官网下载PHPExcel插件包,下载后文件夹如下:
将Classes文件夹放入到项目公共方法内。
新建控制器(访问导出的方法):EntryandexitController
namespace appmodulesreportmanagementcontrollers;
use Yii;
use yiiwebController;
use appmodulesreportmanagementcomponentsSummaryexport;
class EntryandexitController extends BaseController
{
public function actionIndex(){
//查询需导出的数据
$result = array();
//调用导出方法
Summaryexport::export($result);
}
}
新建控制器(公共方法):Summaryexport
namespace appmodulesreportmanagementcomponents;
//引入PHPExcel插件
require dirname(dirname(__FILE__)).'/components/phpexcel/PHPExcel.php';
class Summaryexport
{
public static function export($result){
header("content-type:text/html;charset=utf-8");
error_reporting(E_ALL);
date_default_timezone_set('Europe/London');
//创建sheet工作薄
$objPHPExcel = new PHPExcel();
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
//$result封装(方式选其一即可) -> 此数据可用此方式输出表格或使用单元格赋值两种方式(表格数据)
//方式一
$objWorksheet->fromArray(
array(
array('航次', 'E人数','W人数','总人数','增长率','E商人','W商人','总商人数','团体','一般'),
array('10010','10','12','=SUM(B2:B3)','=SUM((B2:B3)/B3)','10','2','12','12','12'),
array('10020','10','12','=SUM(B2:B3)','=SUM((B2:B3)/B3)','10','2','12','12','12'),
...
)
);
//方式二
//标题
$title_name = "月汇总出入境人数报表";
$objPHPExcel->getActiveSheet()->mergeCells('A1:J1');
$objPHPExcel->getActiveSheet()->SetCellValue('A1', $title_name);
$objPHPExcel->getActiveSheet()->SetCellValue('A2', '航次');
$objPHPExcel->getActiveSheet()->SetCellValue('B2', 'E人数');
$objPHPExcel->getActiveSheet()->SetCellValue('C2', 'W人数');
$objPHPExcel->getActiveSheet()->SetCellValue('D2', '小计');
$objPHPExcel->getActiveSheet()->SetCellValue('E2', '增长率');
$objPHPExcel->getActiveSheet()->SetCellValue('F2', 'E商人');
$objPHPExcel->getActiveSheet()->SetCellValue('G2', 'W商人');
$objPHPExcel->getActiveSheet()->SetCellValue('H2', '小计');
$objPHPExcel->getActiveSheet()->SetCellValue('I2', '团体');
$objPHPExcel->getActiveSheet()->SetCellValue('J2', '一般');
for($i=1;$i<=12;$i++){
$index = 'A'.($i+2);
$index_b = 'B'.($i+2);
$index_c = 'C'.($i+2);
$index_d = 'D'.($i+2);
$index_e = 'E'.($i+2);
$index_f = 'F'.($i+2);
$index_g = 'G'.($i+2);
$index_h = 'H'.($i+2);
$index_i = 'I'.($i+2);
$index_j = 'J'.($i+2);
$prev_index_d = 'D'.($i+1);
$growth_rate = $i == 1?'-':'=SUM(('.$index_d.'-'.$prev_index_d.')/'.$prev_index_d.')';
$objPHPExcel->getActiveSheet()->SetCellValue($index,'一月份');
$objPHPExcel->getActiveSheet()->SetCellValue($index_b, 12);
$objPHPExcel->getActiveSheet()->SetCellValue($index_c, 10);
$objPHPExcel->getActiveSheet()->SetCellValue($index_d, '=SUM('.$index_b.':'.$index_c.')');
$objPHPExcel->getActiveSheet()->SetCellValue($index_e, $growth_rate );
$objPHPExcel->getActiveSheet()->SetCellValue($index_f, 10);
$objPHPExcel->getActiveSheet()->SetCellValue($index_g, 20);
$objPHPExcel->getActiveSheet()->SetCellValue($index_h, '=SUM('.$index_f.':'.$index_g.')');
$objPHPExcel->getActiveSheet()->SetCellValue($index_i, 10);
$objPHPExcel->getActiveSheet()->SetCellValue($index_j, 10)
}
//开始图表
//取得绘制图表的标签(图例项)
$dataseriesLabels = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$D$2', NULL, 1), // '总人数'
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$H$2', NULL, 1), // '商人'
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$I$2', NULL, 1), // '团体'
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$J$2', NULL, 1), // '一般旅客'
);
//取得图表X轴的刻度 (第四个参数值:单元格长度A3-A14)
$xAxisTickValues = array(
new PHPExcel_Chart_DataSeriesValues('String', 'Worksheet!$A$3:$A$14', NULL, 12), // 一月份 to 十二月份
);
//取得绘图所需的数据
$dataSeriesValues = array(
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$D$3:$D$14', NULL, 12),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$H$3:$H$14', NULL, 12),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$I$3:$I$14', NULL, 12),
new PHPExcel_Chart_DataSeriesValues('Number', 'Worksheet!$J$3:$J$14', NULL, 12),
);
//根据取得的东西做出一个图表框架
$series = new PHPExcel_Chart_DataSeries(
PHPExcel_Chart_DataSeries::TYPE_SURFACECHART, // plotType
PHPExcel_Chart_DataSeries::GROUPING_CLUSTERED, // plotGrouping
range(0, count($dataSeriesValues)-1), // plotOrder
$dataseriesLabels, // plotLabel
$xAxisTickValues, // plotCategory
$dataSeriesValues // plotValues
);
//设置生成图表所需要的参数(坐标是横向或竖向显示:DIRECTION_COL|DIRECTION_BAR)
$series->setPlotDirection(PHPExcel_Chart_DataSeries::DIRECTION_COL);
$layout = new PHPExcel_Chart_Layout();
$layout->setShowPercent(TRUE);
$plotarea = new PHPExcel_Chart_PlotArea($layout, array($series));
$legend = new PHPExcel_Chart_Legend(PHPExcel_Chart_Legend::POSITION_RIGHT, NULL, false);
$title = new PHPExcel_Chart_Title('2018年各渠道购票数对比图');
// $xAxisLabel = new PHPExcel_Chart_Title('Financial Period'); //X轴标题
$yAxisLabel = new PHPExcel_Chart_Title('人数 ($k)'); //Y轴标题
$chart = new PHPExcel_Chart(
'chart1', // name
$title, // title,空为null
$legend, // legend
$plotarea, // plotArea
true, // plotVisibleOnly
0, // displayBlanksAs
null, // xAxisLabel
$yAxisLabel // yAxisLabel
);
//给定图表所在表格中的位置
$chart->setTopLeftPosition('L2');
$chart->setBottomRightPosition('T15');
//将chart添加到sheet中
$objWorksheet->addChart($chart);
//--------------图表end;
$objPHPExcel->getActiveSheet()->setTitle("全年合计");
$filename = '出入境人数报表.xls';
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->setIncludeCharts(TRUE); //图表必须
header("Pragma: public");
header("Expires: 0");
header("Cache-Control:must-revalidate,post-check=0,pre-check=0");
header("Content-Type:application/force-download");
header("Content-Type:application/vnd.ms-execl");
header("Content-Type:application/octet-stream");
header("Content-Type:application/download");
header("Content-Disposition:attachment;filename=".$filename);
header("Content-Transfer-Encoding:binary");
$objWriter->save("php://output");
}
已完结,暂未解决表格数据与图表数据关联。
内容来源于网络如有侵权请私信删除
php excel导出柱状图,YII2框架下使用PHPExcel导出柱状图相关推荐
- Yii框架中使用PHPExcel导出Excel文件
Yii框架中使用PHPExcel导出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html 转载于:https://www.cnblogs.com/fl ...
- php的yii2框架下开发环境xampp,vim,xdebug,DBGp的搭建
2019独角兽企业重金招聘Python工程师标准>>> 引言 Yii1.1的搭建过程见这里.下面做少许改动,加入composer部分,使之用于Yii2. 选择Linux桌面环境Dee ...
- vue 导入excel插件_Vue框架下实现导入导出Excel、导出PDF
项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...
- windows 导出 oracle,windows 环境下oracle导入导出
--创建表空间 create tablespace EBSPACE datafile 'E:\oraclespace\EBSPACE.DEF' size 500M autoextend on next ...
- linux用命令导出mysql数据库,linux下导入、导出mysql数据库命令(示例代码)
一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql #/usr ...
- yii2必须掌握php,Yii2框架中一些折磨人的坑
说点闲话 距离上次写博客,已经有一年了.在动手写之前,总是带着深深的罪恶感.被它折磨许久,终于,还是,动手了. 值得庆祝的一件事:最近开始健身了.每天动感单车45分钟,游泳45分钟,真的是(生)爽(不 ...
- phpexcel导出超过26列解决方案
phpexcel导出超过26列解决方案 原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下: PHPExcel_Cell::stringFromColumnInde ...
- YII2框架的excel表格导出
2019独角兽企业重金招聘Python工程师标准>>> 最近的项目做到关于表格输出的功能,之前用TP的时候也做过,趁着这次功能比较多样的机会整理一下 本文是基于YII2框架进行开发的 ...
- poi导出excel文件,并生成原生图表(包括折线图,柱状图,饼状图,面积图)
前段时间,因为客户需要,要做一个导出excel文件功能,并能生成原生的图表的(不是把图片插入到excel文档),找了很多文档看,也看了很多别人的代码,个人也总结了一下,不足之处,请各位大牛谅解. 需要 ...
- php dropdownlist,Yii2框架dropDownList下拉菜单用法实例分析
本文实例讲述了Yii2框架dropDownList下拉菜单用法.分享给大家供大家参考,具体如下: dropDownList是yii框架中一个自带的下拉功能了解,我们可以直接使用dropDownList ...
最新文章
- thinkphp概述
- 一篇文章教你弄懂SpringMvc中的HttpMessageConverter
- linux找不到动态链接库 .so文件的解决方法(转自:http://www.cnblogs.com/xudong-bupt/p/3698294.html)
- linux双显卡配置_Linux系统怎么配置双显卡?
- java list 循环赋值_Java List集合的坑(add方法报空指针,循环赋值时list已保存的值会改变)...
- C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改(下)
- Linux Shell 操作命令 ls
- 电商首焦素材的万能构图模板
- 清空div中的内容而不刷新整个页面_Vue中的$nextTick机制
- c语言标识符的规范,初识C语言-声明和使用变量、标识符的命名规范以及基本数据类型...
- 64位Windows 7平台安装32位Timesten,配置ODBC数据源
- 21天学通java 3_《21天学通Java》PDF 下载
- ipcfg报错_CentOS服务器安装Anaconda
- 车辆销售系统用例_销售管理系统的UML分析与设计
- 三轴加速度传感器的计步测算法
- assuming drive cache: write through 处理
- 你的健身方法真的正确吗
- SpringBoot微信小程序授权登录
- gtx3050属于什么档次的显卡
- 八年级上册历史知识点(第1课 鸦片战争)