yii 导出excel表格里换行_Yii框架中使用PHPExcel导出Excel文件

最近在研究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 );

$objectPHPExcel->getActiveSheet()->getPageSetup()->setHorizontalCentered(true);

$objectPHPExcel->getActiveSheet()->getPageSetup()->setVerticalCentered(false);

ob_end_clean();

ob_start();

header('Content-Type : application/vnd.ms-excel');

header('Content-Disposition:attachment;filename="'.'产品信息表-'.date("Y年m月j日").'.xls"');

$objWriter= PHPExcel_IOFactory::createWriter($objectPHPExcel,'Excel5');

$objWriter->save();

代码执行后,会直接生成Excel,并提示下载或打开。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值