以下是我用于导出功能的代码
public function export(){
$users = DB::table('users')->where('user_type','Farmer')->orWhere('user_type','Dealer')->select('id','name','middlename','surname','mobile','state','district','taluka','user_type')->get()->map(function ($item, $key){
return (array) $item;
})
->all();
$usersArray = [];
foreach ($users as $user) {
$usersArray[] =$user;
}
Excel::create('users',function($excel)use($usersArray) {
$excel->setTitle('users');
$excel->setCreator('Laravel');
$excel->setDescription('users file');
$excel->sheet('sheet1',function($sheet)use($usersArray) {
$sheet->fromArray($usersArray,null,'A1',true,true);
});
})->download('xlsx');
}
此代码在localhost上工作正常,localhost没有问题,但在服务器上显示错误“无法访问此站点”,我无法弄清楚服务器上的问题是什么。 我甚至在stackoverflow上尝试了一些其他解决方案但无法工作。
答案 0 :(得分:1)
$users = DB::table('users')
->where('user_type','Farmer')
->orWhere('user_type','Dealer')
->select('id', 'name', 'middlename', 'surname', 'mobile', 'state', 'district', 'taluka','user_type')
->get()->map(function ($item, $key){
return (array) $item;
})->all()->toArray();
使用->toArray()
后,变量$users
变量将是一个数组
现在谈到你的观点,
错误的可能性
1)创建临时文件的文件夹权限
2)超出允许的内存大小,您可以通过设置php.ini
ini_set('memory_limit','-1');
文件或代码中将内存大小更改为无限制
3)授予服务器中laravel setup存储目录的写权限。
4)检查apache / nginx日志中是否有其他错误可能,因为它是一个500错误响应,应该记录到apache / nginx的日志文件中。
我的建议是使用league/csv
个包或box/spout
个包与laravel Excel相关的作品。
答案 1 :(得分:0)
只是提示,您不必自己制作$usersArray
,只需在toArray()
之后使用all()
方法。
你的nginx / apache日志中有没有消息?
答案 2 :(得分:0)
PHPExcel ZipArchive not found最终这个解决方案对我有用。我只是追加PHPExcel_Settings :: setZipClass(PHPExcel_Settings :: PCLZIP); $ zipClass = PHPExcel_Settings :: getZipClass()之前的这一行;在文件PHPExcel / Reader / Excel2007.php中,现在我的导出功能也在服务器上运行。