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')

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11221.html