laravel-admin 添加Excel导入功能
Laravel  /  管理员 发布于 4年前   5636
引入laravel-excel;
添加导入按钮:
//导入
$grid->tools(function ($tools) {
$tools->append(new ExcelImport());
});
//导出
$grid->exporter(new ExcelExporter('cardnews'));
3. 导入按钮控制器
<?php
namespace App\Admin\Extensions\Tools;
use Encore\Admin\Admin;
use Encore\Admin\Grid\Tools\AbstractTool;
use Illuminate\Support\Facades\Request;
class ExcelImport extends AbstractTool
{
public function script()
{
return <<<EOT
$('.file-upload').on('change', function () {
$('.file-upload-form').submit();
});
EOT;
}
public function render()
{
Admin::script($this->script());
if (Request::path() == 'loansarticles'){
$url = 'loansnewsimport';
}else {
$url = 'cardnewsimport';
}
return view('admin.tools.excelimport')->with('url',$url);
}
}
4. 按钮视图:\resources\views\admin\tools\excelimport.blade.php
<label class="btn btn-success"{{-- data-toggle="modal" data-target="#uploadModal"--}}>
<i class="fa fa-stack-overflow"></i> 数据导入
<form action="{{$url}}" method="post" class="file-upload-form" enctype="multipart/form-data" pjax-container>
<input type="file" name="files[]" class="hidden file-upload" multiple>
{{ csrf_field() }}
</form>
</label>
5. 导入的方法:重组数据拼sql,插入数据库
public function import(Request $request)
{
$files = $request->file('files');
$dir = $request->get('dir', '/');
$manager = new MediaManager($dir,'xlsx');
try {
//文件上传服务器
if ($manager->upload($files)) {
admin_toastr('导入成功');
}
//文件存储路径
$filePath = "/data/www/cbb_new/storage/app/public/".$files[0]->getClientOriginalName();
Excel::load($filePath, function($reader) {
$data = $reader->all();
//dd($data);
//批量存储
$value=[];
$lastid = CardArticle::orderBy('id','desc')->limit(1)->value('id');
foreach ($data as $k => $v ){
$lastid++;
//存储表格每行的值
$value['title'] =$v['title'];
$value['dt'] =date('Y-m-d H:i:s');
$value['seotitle'] =$v['seotitle'];
$value['keywords'] =$v['keywords'];
$value['author'] =$v['author'];
$value['class_id'] = intval($v['class_id']);
$value['bank_id'] =intval($v['bank_id']);
$value['content'] =$v['content'];
$value['views'] =intval($v['views']);
$value['order'] =intval($v['order']);
$value['generate_url']= '/cardnews/cardnews_'.$lastid.'.shtml';
$value['status'] =intval($v['status']);
CardArticle::create($value);
}
});
} catch (\Exception $e) {
admin_toastr($e->getMessage(), 'error');
}
return back();
}
6. 写路由:admin\routes.php 我的方法写在CardArticleController控制器里面
$router->any('cardnewsimport', 'CardArticleController@import');
7. Models里面添加要导入的字段
protected $fillable = ['xx','xx',...]
完成 看看效果 表格文件/导入后截图
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号