导出结果:

首先,到官网下载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导出柱状图相关推荐

  1. Yii框架中使用PHPExcel导出Excel文件

    Yii框架中使用PHPExcel导出Excel文件http://www.cnblogs.com/wgx214/p/3709521.html 转载于:https://www.cnblogs.com/fl ...

  2. php的yii2框架下开发环境xampp,vim,xdebug,DBGp的搭建

    2019独角兽企业重金招聘Python工程师标准>>> 引言 Yii1.1的搭建过程见这里.下面做少许改动,加入composer部分,使之用于Yii2. 选择Linux桌面环境Dee ...

  3. vue 导入excel插件_Vue框架下实现导入导出Excel、导出PDF

    项目需求:开发一套基于Vue框架的工程档案管理系统,用于工程项目资料的填写.编辑和归档,经调研需支持如下功能: Excel报表的导入.导出 PDF文件的导出 打印表格 经过技术选型,项目组一致决定通过 ...

  4. windows 导出 oracle,windows 环境下oracle导入导出

    --创建表空间 create tablespace EBSPACE datafile 'E:\oraclespace\EBSPACE.DEF' size 500M autoextend on next ...

  5. linux用命令导出mysql数据库,linux下导入、导出mysql数据库命令(示例代码)

    一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql #/usr ...

  6. yii2必须掌握php,Yii2框架中一些折磨人的坑

    说点闲话 距离上次写博客,已经有一年了.在动手写之前,总是带着深深的罪恶感.被它折磨许久,终于,还是,动手了. 值得庆祝的一件事:最近开始健身了.每天动感单车45分钟,游泳45分钟,真的是(生)爽(不 ...

  7. phpexcel导出超过26列解决方案

    phpexcel导出超过26列解决方案 原文:phpexcel导出超过26列解决方案 将列的数字序号转成字母使用,代码如下:   PHPExcel_Cell::stringFromColumnInde ...

  8. YII2框架的excel表格导出

    2019独角兽企业重金招聘Python工程师标准>>> 最近的项目做到关于表格输出的功能,之前用TP的时候也做过,趁着这次功能比较多样的机会整理一下 本文是基于YII2框架进行开发的 ...

  9. poi导出excel文件,并生成原生图表(包括折线图,柱状图,饼状图,面积图)

    前段时间,因为客户需要,要做一个导出excel文件功能,并能生成原生的图表的(不是把图片插入到excel文档),找了很多文档看,也看了很多别人的代码,个人也总结了一下,不足之处,请各位大牛谅解. 需要 ...

  10. php dropdownlist,Yii2框架dropDownList下拉菜单用法实例分析

    本文实例讲述了Yii2框架dropDownList下拉菜单用法.分享给大家供大家参考,具体如下: dropDownList是yii框架中一个自带的下拉功能了解,我们可以直接使用dropDownList ...

最新文章

  1. thinkphp概述
  2. 一篇文章教你弄懂SpringMvc中的HttpMessageConverter
  3. linux找不到动态链接库 .so文件的解决方法(转自:http://www.cnblogs.com/xudong-bupt/p/3698294.html)
  4. linux双显卡配置_Linux系统怎么配置双显卡?
  5. java list 循环赋值_Java List集合的坑(add方法报空指针,循环赋值时list已保存的值会改变)...
  6. C/C++:Windows编程—Hook IE浏览器实现URL拦截及更改(下)
  7. Linux Shell 操作命令 ls
  8. 电商首焦素材的万能构图模板
  9. 清空div中的内容而不刷新整个页面_Vue中的$nextTick机制
  10. c语言标识符的规范,初识C语言-声明和使用变量、标识符的命名规范以及基本数据类型...
  11. 64位Windows 7平台安装32位Timesten,配置ODBC数据源
  12. 21天学通java 3_《21天学通Java》PDF 下载
  13. ipcfg报错_CentOS服务器安装Anaconda
  14. 车辆销售系统用例_销售管理系统的UML分析与设计
  15. 三轴加速度传感器的计步测算法
  16. assuming drive cache: write through 处理
  17. 你的健身方法真的正确吗
  18. SpringBoot微信小程序授权登录
  19. gtx3050属于什么档次的显卡
  20. 八年级上册历史知识点(第1课 鸦片战争)

热门文章

  1. 企业如何实践开源协同
  2. 一键logo生成器_logo制作助手下载-logo制作助手APP免费版下载v1.1
  3. Android 屏幕适配方案
  4. Python爬虫教程:包图网免费付费素材爬取【附源码】
  5. matlab期货,Matlab在股指期货中的应用
  6. Java生成word 并导出简历
  7. 西北工业大学电工学mooc第六章测试题及解析
  8. 传智黑马java基础学习——day32
  9. Java中swing修改左上角的图标
  10. 计算机怎么硬盘重做系统,怎么直接从硬盘装系统 直接从硬盘安装系统教程