我想捕获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');`
答案 0 :(得分:3)
替换了这一行:
$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');
答案 1 :(得分:2)
使用composer将PHPExcel添加到项目中。然后在require('@ vendor / ...')中使用@vendor前缀来访问特定包
答案 2 :(得分:0)
通过使用composer安装phpexcel,将phpexcel添加到您的供应商目录。下一步使用它$objPHPExcel = new \PHPExcel();
希望能帮助到你。
答案 3 :(得分:0)
这个模块最初对我有用。但是后来我添加了 Yii2 并花了很长时间寻找解决问题的方法。对于那些找到这个话题的人,就像我所做的那样,并将 Yii2 添加到 Yii1 中,我会留下这个解决方案。
对我来说首先帮助了这个。
<!doctype HTML>
<html>
<body>
<p id="GameScore">Score: 0</p>
<button>Start Game!</button>
<input id="userInput" type="text">
</body>
</html>
当我添加 Yii2 时我改变了
spl_autoload_unregister(['YiiBase', 'autoload']);
require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
spl_autoload_register(['YiiBase', 'autoload']);
下次使用用户7702308
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']);