插件库:maatwebsite/excel - Packagist
官网:Introduction | Laravel Excel
导出步骤: 5 minute quick start | Laravel Excel
安装对应的phpexcel插件
composer require maatwebsite/excel
注:composer需要切源操作,否则下载将可能不会成功
安装成功后,就提供生成导出数据的命令,使用此命令生成导出数据文件
php artisan make:export FangOwnerExport --model=Models/FangOwner
生成对应的文件
在相对的控制器导出excel
#引入
use Maatwebsite\Excel\Facades\Excel;
#导出
public function phpexcel(){
# 对应文件,导出标题
return Excel::download(new FirmExport(),'news.xlsx');
}
详细书写一下思路,仅提供借鉴
1、创建路由
#excel导出
Route::get('bookexcel',[\App\Http\Controllers\admin\AuthController::class,'fileexcel'])->name('book.excel');
2、前端使用
3、创建公共导出方法
在app文件下创建common文件并且创建common.php
在composer.json文件中autoload中进行书写
"files": [
#公共方法路径
"app/common/common.php"
]
刷新框架 在命令行
composer dump-autoload
以上操作就是对框架生成共类,完成后在公共类中封装一个导出方法
//判断是否有该方法
if(!function_exists('phpexcel')){
//表头,标题,数据
function phpexcel($cell,$title,$data){
set_time_limit(0);
ini_set('memory_limit', '128M');
header('Content-Type: application/vnd.ms-execl');
header('Content-Disposition: attachment;filename="'.$title . '.csv"');
//以写入追加的方式打开
$fp = fopen('php://output', 'a');
foreach($cell as $key => $item) {
$celldata[$key] = iconv('UTF-8', 'GBK//IGNORE', $item);
}
//将标题写到标准输出中
fputcsv($fp, $celldata);
foreach($data as $row){
foreach($row as $key => $item) {
//这里必须转码,不然会乱码
$row[$key] = iconv('UTF-8', 'GBK//IGNORE', $item);
}
fputcsv($fp, $row);
}
$res = ['file'=>$title];
return response()->json($res);
}
}
4、控制其调用
#导出
public function fileexcel(Request $request){
//防止数据量大内存不够
ini_set('memory_limit', '256M');
//自定义字段
$cell=['id','文章标题','邮箱','加入时间'];
//自定义导出文件名
$title = $request->input('title','文章列表');
$title = $title.date('YmdHis');
//此方法为导出数据来源,在库文件里,你可根据自己需要的数据查数据库
$res=Auths::get()->toarray();
$data=[];
foreach ($res as $k=>$v){
$data[$k][]=$v['id'];
$data[$k][]=$v['auth_name'];
$data[$k][]=$v['auth_email'];
$data[$k][]=$v['created_at'];
}
//导出表格
return phpexcel($cell,$title,$data);
}