如何在 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');
我想捕获 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');