laravel-admin 添加Excel导入功能
Laravel  /  管理员 发布于 2年前   4520
引入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',...]
完成 看看效果 表格文件/导入后截图
nkt 在
阿里云香港服务器搭建自用vpn:Shadowsocks使用流程步骤中评论 用了三分钟就被禁了,直接阿里云服务器22端口都禁了..熊丽 在
安装docker + locust + boomer压测环境实现对接口的压测中评论 试试水..博主 在
阿里云香港服务器搭建自用vpn:Shadowsocks使用流程步骤中评论 @test 也可能是国内大环境所至,也是好事,督促你该研究学习新技术..test 在
阿里云香港服务器搭建自用vpn:Shadowsocks使用流程步骤中评论 打了一次网页,然后再也打不开了。。是阿里云的缘故吗?..博主 在
centos7中Meili Search搜索引擎安装流程步骤中评论 @鹿 执行以下命令看看你的2.27版本是否存在strin..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号