如何在 Yii2 框架中集成 PHPExcel?

How to integrate PHPExcel in Yii2 Framework?

我想捕获 html 表单字段数据并将其保存在 .xlsx 文件中。我环顾四周,找到了 PHPExcel,但不知道如何将它集成到 Yii2。谁能告诉我如何积分。我想在我的控制器中使用这样的东西:

require('../PHPExcel.php');
$objPHPExcel = new PHPExcel;
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,  "Excel2007");
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="file.xlsx"');
header('Cache-Control: max-age=0');
$objWriter->save('php://output');`

在您的代码中替换此行:

$objPHPExcel = new PHPExcel;

用这个:

$objPHPExcel = new \PHPExcel();

也将 $objWriter 编辑为:

$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');

要理解这里的基本思想是示例:

          $objPHPExcel = new \PHPExcel();

          $sheet=0;

          $objPHPExcel->setActiveSheetIndex($sheet);
          $foos = [
                    ['firstname'=>'Jane',
                    'lastname'=>'pat'],
                    ['firstname'=>'Jane',
                    'lastname'=>'Jones'],
                    ['firstname'=>'Jane',
                    'lastname'=>'Doe'],
            ];

        $objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(20);
        $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(20);

        $objPHPExcel->getActiveSheet()->setTitle('xxx')                     
         ->setCellValue('A1', 'Firstname')
         ->setCellValue('B1', 'Lastname');

     $row=2;

            foreach ($foos as $foo) {  

                $objPHPExcel->getActiveSheet()->setCellValue('A'.$row,$foo['firstname']); 
                $objPHPExcel->getActiveSheet()->setCellValue('B'.$row,$foo['lastname']);
                $row++ ;
            }

    header('Content-Type: application/vnd.ms-excel');
    $filename = "MyExcelReport_".date("d-m-Y-His").".xls";
    header('Content-Disposition: attachment;filename='.$filename .' ');
    header('Cache-Control: max-age=0');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    $objWriter->save('php://output');       

通过使用 composer.Next 安装 phpexcel 将其添加到供应商目录中 $objPHPExcel = new \PHPExcel();
希望能帮助到你。

使用 composer 将 PHPExcel 添加到项目中。然后在 require('@vendor/...') 中使用@vendor 前缀引用它以到达特定包

这个模块最初对我有用。但后来我添加了 Yii2 并花了很长时间寻找问题的解决方案。对于那些像我一样找到这个话题并且还把 Yii2 添加到 Yii1 的人,我将留下这个解决方案。

对我来说首先帮助了这个。

            spl_autoload_unregister(['YiiBase', 'autoload']);
            require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
            spl_autoload_register(['YiiBase', 'autoload']);

当我添加 Yii2 时我改变了

            spl_autoload_unregister(['Yii', 'autoload']);
            spl_autoload_unregister(['YiiBase', 'autoload']);
            require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
            spl_autoload_register(['YiiBase', 'autoload']);
            spl_autoload_register(['Yii', 'autoload']);
    

下次使用写的 user7702308

      $objPHPExcel = new \PHPExcel();
      ...
      $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');