最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法:
1、首先在config\main.php中添加对PHPExcel的引用,我的方式是这样:
1
2
3
4
5
6
7
8
|
// autoloading model and component classes 'import' => array (
'application.models.*' ,
'application.components.*' ,
'application.extensions.phpexcel.*' ,
),
|
另外也有人用components 这个配置,但是我的有问题,所以就用上面的方法。
2、按照下面的代码修改PHPExcel代码目录里的Autoloader.php文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
public static function Register() {
$functions = spl_autoload_functions();
foreach ( $functions as $function )
spl_autoload_unregister( $function );
$functions = array_merge ( array ( array ( 'PHPExcel_Autoloader' , 'Load' )), $functions );
foreach ( $functions as $function )
$x = spl_autoload_register( $function );
return $x ;
} // function Register()
|
上面的函数中,注释掉的是原有的代码。
3、下面的代码是输出Excel,以及一些常用的属性设置,在你的controller中:
public
function
actionExport()
{
$objectPHPExcel
=
new
PHPExcel();
$objectPHPExcel
->setActiveSheetIndex(0);
$page_size
= 52;
//数据的取出
$model
= Yii::app()->session[
'printdata'
];
$dataProvider
=
$model
->search();
$dataProvider
->setPagination(false);
$data
=
$dataProvider
->getData();
$count
=
$dataProvider
->getTotalItemCount();
//总页数的算出
$page_count
= (int)(
$count
/
$page_size
) +1;
$current_page
= 0;
$n
= 0;
foreach
(
$data
as
$product
)
{
if
(
$n
%
$page_size
=== 0 )
{
$current_page
=
$current_page
+1;
//报表头的输出
$objectPHPExcel
->getActiveSheet()->mergeCells(
'B1:G1'
);
$objectPHPExcel
->getActiveSheet()->setCellValue(
'B1'
,
'产品信息表'
);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'B2'
,
'产品信息表'
);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'B2'
,
'产品信息表'
);
$objectPHPExcel
->setActiveSheetIndex(0)->getStyle(
'B1'
)->getFont()->setSize(24);
$objectPHPExcel
->setActiveSheetIndex(0)->getStyle(
'B1'
)
->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'B2'
,
'日期:'
.
date
(
"Y年m月j日"
));
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'G2'
,
'第'
.
$current_page
.
'/'
.
$page_count
.
'页'
);
$objectPHPExcel
->setActiveSheetIndex(0)->getStyle(
'G2'
)
->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
//表格头的输出
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'A'
)->setWidth(5);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'B3'
,
'编号'
);
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'B'
)->setWidth(6.5);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'C3'
,
'名称'
);
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'C'
)->setWidth(17);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'D3'
,
'生产厂家'
);
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'D'
)->setWidth(22);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'E3'
,
'单位'
);
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'E'
)->setWidth(15);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'F3'
,
'单价'
);
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'F'
)->setWidth(15);
$objectPHPExcel
->setActiveSheetIndex(0)->setCellValue(
'G3'
,
'在库数'
);
$objectPHPExcel
->getActiveSheet()->getColumnDimension(
'G'
)->setWidth(15);
//设置居中
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)
->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
//设置边框
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)
->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)
->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)
->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)
->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)
->getBorders()->getVertical()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
//设置颜色
$objectPHPExcel
->getActiveSheet()->getStyle(
'B3:G3'
)->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB(
'FF66CCCC'
);
}
//明细的输出
$objectPHPExcel
->getActiveSheet()->setCellValue(
'B'
.(
$n
+4) ,
$product
->id);
$objectPHPExcel
->getActiveSheet()->setCellValue(
'C'
.(
$n
+4) ,
$product
->product_name);
$objectPHPExcel
->getActiveSheet()->setCellValue(
'D'
.(
$n
+4) ,
$product
->product_agent->name);
$objectPHPExcel
->getActiveSheet()->setCellValue(
'E'
.(
$n
+4) ,
$product
->unit);
$objectPHPExcel
->getActiveSheet()->setCellValue(
'F'
.(
$n
+4) ,
$product
->unit_price);
$objectPHPExcel
->getActiveSheet()->setCellValue(
'G'
.(
$n
+4) ,
$product
->library_count);
//设置边框
$currentRowNum
=
$n
+4;
$objectPHPExcel
->getActiveSheet()->getStyle(
'B'
.(
$n
+4).
':G'
.
$currentRowNum
)
->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B'
.(
$n
+4).
':G'
.
$currentRowNum
)
->getBorders()->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B'
.(
$n
+4).
':G'
.
$currentRowNum
)
->getBorders()->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B'
.(
$n
+4).
':G'
.
$currentRowNum
)
->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objectPHPExcel
->getActiveSheet()->getStyle(
'B'
.(
$n
+4).
':G'
.
$currentRowNum
)
->getBorders()->getVertical()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$n
=
$n
+1;
}
//设置分页显示
//$objectPHPExcel->getActiveSheet()->setBreak( 'I55' , PHPExcel_Worksheet::BREAK_ROW );
//$objectPHPExcel->getActiveSheet()->setBreak( 'I10' , PHPExcel_Worksheet::BREAK_COLUMN );
$objectPHPE
Yii框架中使用PHPExcel导出Excel文件的更多相关文章
-
PHPExcel导出excel文件
今天园子刚开,先来个货顶下,后续园丁qing我会再慢慢种园子的,希望大家多来园子逛逛. PHPExcel导出excel文件,先说下重要的参数要记住的东西 impUser() 导入方法 exportEx ...
-
应用phpexcel导出excel文件后打不开的问题解决方法
应用phpexcel导出excel文件后打不开,提示“文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配”. 试了以下方法: 1.首先区分文件格式是2003,还是2007. 参 ...
-
Yii中使用PHPExcel导出Excel
最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法: 1.首先在config/main.php中添加对PHPExcel的引用,我的方式是这样: // auto ...
-
在Yii框架中使用PHPExcel
PHPExcel是一个比较好用的php读取excel文件的类库,今天遇到了在yii中如何加载PHPExcel类文件的问题,因为Yii的autoload机制是安装类名去找文件,即文件名就是相应的类名,而 ...
-
flask中使用xlsxwriter导出excel文件
最近需要使用flask导出xlsxwriter生成的excel文件,在文件比较小的情况下,可以直接导出. 首先,这里使用了StringIO,导出使用的模块 import xlsxwriter impo ...
-
thinkPHP5.0 使用PHPExcel导出Excel文件
首先下载PHPExcel类.网上很多,自行下载. 我下载的跟composer下载的不太一样.我下载的是 下载存放目录.jpg 而composer下载的是: composer下载.jpg 本篇使 ...
-
使用phpExcel导出excel文件
function export($log_list_export) { require "../include/phpexcel/PHPExcel.php"; require &q ...
-
php中使用PHPExcel操作excel(xls)文件
读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/ 1.读取xls文件内容 代码如下 复制代码 ...
-
使用PHPExcel实现Excel文件的导入和导出(模板导出)
在之前有写过一篇文章讲述了使用PHP快速生成excel表格文件并下载,这种方式生成Excel文件,生成速度很快,但是有缺点是:1.单纯的生成Excel文件,生成的文件没有样式,单元格属性(填充色,宽度 ...
随机推荐
-
跨平台运行 Rafy 首次部署记录
一直想在 Linux 上使用 MONO 试试运行 Rafy,最近因为业务需要,总算是真正地试验了一次.下面是本次部署记录的一些要点. Linux 这次部署,我是和两位同事一起来试验的.由于我们对 Li ...
-
【杂记】JavaScript篇
35.jquery中ifram子窗体调用父窗体方法.父窗体调用子窗体方法 //调用子窗体中的方法. ].contentWindow;//获取子窗体的window对象 childWindow.subFo ...
-
POJ 2752 Seek the Name, Seek the Fame
传送门 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14761 Accepted: 7407 Description ...
-
[!!!!!]Inno Setup教程-常见问题解答
[转]Inno Setup教程-常见问题解答 功能 * 翻译 Inno Setup 文字 * 它支持 MBCS (多字节字符集) 吗? * 将来会支持 Windows Installer 吗? ...
-
Shell练习 验证号码
原文: https://leetcode.com/problems/valid-phone-numbers/ Given a text file file.txt that contains list ...
-
【转】Android学习系列–App离线下载功能实现
原文:http://www.cnblogs.com/qianxudetianxia/archive/2011/07/20/2108965.html 宜未雨而绸缪,毋临渴而掘井.----朱用纯<治 ...
-
Ubuntu14.04安装完全分布式Hadoop1.2.1
一直想装hadoop集群,但总是没有时间,最近抽了三天时间下定决定装了一下,在我的wmware上虚拟了一台Ubuntu14.04,然后再复制了两台虚拟机,准备开始!!!! 基本参考 http://ww ...
-
1067: [SCOI2007]降雨量
1067: [SCOI2007]降雨量 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2148 Solved: 554[Submit][Status] ...
-
EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值
一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为 -1 ,sqlserver 里面 还没有测试过 using (var ctx = new MyDbConte ...
-
php使用redis的几种常见方式和用法
一.简单的字符串缓存 比如针对一些sql查询较慢,更新不频繁的数据进行缓存. <?php $redis = new Redis(); $redis->connect('127.0.0.1' ...