·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> Yii框架中使用PHPExcel导出Excel文件

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

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
Yii框架中使用phpExcel导出Excel文件

最近在研究PHP的Yii框架,很喜欢,碰到导出Excel的问题,研究了一下,就有了下面的方法:

1、首先在config\main.php中添加对PHPExcel的引用,我的方式是这样:

12345678//autoloadingmodelandcomponentclasses'import'=>array('application.models.*','application.components.*','application.extensions.phpexcel.*',),

另外也有人用components这个配置,但是我的有问题,所以就用上面的方法。

2、按照下面的代码修改PHPExcel代码目录里的Autoloader.php文件:

12345678910111213141516publicstaticfunctionRegister(){$functions=spl_autoload_functions();foreach($functionsas$function)spl_autoload_unregister($function);$functions=array_merge(array(array('PHPExcel_Autoloader','Load')),$functions);foreach($functionsas$function)$x=spl_autoload_register($function);return$x;}//functionRegister()

上面的函数中,注释掉的是原有的代码。

3、下面的代码是输出Excel,以及一些常用的属性设置,在你的controller中:

publicfunctionactionExport(){$objectPHPExcel=newPHPExcel();$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($dataas$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);