Excel 导入

未匹配的标注

这里举例一种 Excel 导入的写法, 或许不是最佳实现, 仅作参考~

数据量不大的情况下, 使用 InputExcel 也是个不错的主意~


1. 在 CRUD 的工具栏添加两个按钮

public function list(): Page
{
    $crud = $this->baseCRUD()
        ->headerToolbar([
            $this->createButton(true),
            // 导入按钮
            Components::make()->importAction(admin_url('xxx_records/import')),
            // 模板下载按钮
            Components::make()->downloadImportTemplate('template/XXX导入模板.xlsx'),
            ...$this->baseHeaderToolBar(),
        ])
        // ....
    }

注意: 此处的 Components 是自己封装的, 里面可以放一些常用的非基础组件, 并非框架自带~


导入按钮实现

这里实现了一个弹窗表单, 上传文件并提交~

// 这里我封装到了一个单独的 class 中
// 你也可以直接放到对应的 Controller , 或者是直接塞到 headerToolbar 里面, 随你高兴~
public function importAction($api)
{
    return amisMake()->DialogAction()->label('导入')->icon('fa fa-upload')->dialog(
        amisMake()->Dialog()->title('导入')->body(
            amisMake()->Form()->mode('normal')->api($api)->body([
                amisMake()->FileControl()->name('file')->required(true)->drag(true),
            ]),
        )
    );
}


模板下载按钮实现

这里传入了文件地址, 通过跳转链接的方式, 让浏览者自动下载文件~

注: 这里我的模板文件路径为: /public/template/XXX导入模板.xlsx

public function downloadImportTemplate($path)
{
    return amisMake()
        ->UrlAction()
        ->blank(true)
        ->label('下载模板')
        ->icon('fa fa-download')
        ->url(url($path));
}


2.实现导入接口

// file: app/Admin/routes.php
// 添加一个路由
$router->post('xxx_records/import', [\App\Admin\Controllers\XXXRecordController::class, 'import']);
// 控制器中实现导入数据
public function import(Request $request)
{
    $file = storage_path('app/public/' . $request->input('file'));

    Excel::import(new XXXRecordImport, $file);

    return $this->response()->successMessage('导入成功');
}

注: 此处使用 laravel-excel 实现了最基础的数据导入, 其他逻辑自行添加~




😏建议在使用前通读并背诵相关文档: laravelamis ~

常见问题参见 issue

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~