无法加载excel \ laravel-excel [英] Failed to load excel\laravel-excel

查看:87
本文介绍了无法加载excel \ laravel-excel的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只想在视图刀片中导出过滤的数据.我正在使用Laravel 7和maatwebsite/excel 3.1和PHP 7.4.2.

I want to export only filtered data in view blade. I am using Laravel 7 and maatwebsite/excel 3.1 and PHP 7.4.2.

我仔细阅读了文档并应用了它:

I went through the documentation and applied this:

查看

<a href="{!! route('users.export-filter') !!}" class="btn btn-success">
    <i class="la la-download"></i>
    Export Filter
</a>

web.php

Route::get('/users/export-filter', 'Admin\UserController@filter')->name('users.export-filter');

UserController.php

UserController.php

public function filter()
{
    return Excel::download(new FilterUserExport, 'filter.xlsx');
}

FilterUserExport.php

FilterUserExport.php

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromView;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\AfterSheet;
use Modules\User\Entities\User;
use Illuminate\Contracts\View\View;

class FilterUserExport implements FromView, ShouldAutoSize, WithEvents
{
    /**
     * @return View
     */
    public function view(): View
    {
        $users = app(User::class)->newQuery();

        if ( request()->has('search') && !empty(request()->get('search')) ) {
            $search = request()->query('search');
            $users->where(function ($query) use($search) {
                $query->where('first_name', 'LIKE', "%{$search}%")
                    ->orWhere('last_name', 'LIKE', "%{$search}%")
                    ->orWhere('email', 'LIKE', "%{$search}%")
                    ->orWhere('mobile', 'LIKE', "%{$search}%");
            });
        }
        return view('users.index', compact('users'));
    }

    /**
     * @return array
     */
    public function registerEvents(): array
    {
        return [
            AfterSheet::class => function(AfterSheet $event) {
                $event->sheet->getDelegate()->setRightToLeft(true);
            },
        ];
    }
}

index.blade.php

index.blade.php

@extends("admin-panel.layouts.master")
@section("content")
    <div class="content-body">
        <section class="grid-with-inline-row-label" id="grid-with-inline-row-label">

            <div class="row">
                <div class="col-12">
                    <div class="card">
                        <div class="card-header">
                            <h4 class="card-title">
                                <a data-action="collapse">
                                    <i class="ft-plus mr-1"></i>
                                    ثبت فیلتر
                                </a>
                            </h4>
                            <a class="heading-elements-toggle"><i class="ft-align-justify font-medium-3"></i></a>
                            <div class="heading-elements">
                                <ul class="list-inline mb-0">
                                    <li><a data-action="collapse"><i class="ft-plus"></i></a></li>
                                    <li><a data-action="reload"><i class="ft-rotate-cw"></i></a></li>
                                    <li><a data-action="expand"><i class="ft-maximize"></i></a></li>
                                    <li><a data-action="close"><i class="ft-x"></i></a></li>
                                </ul>
                            </div>
                        </div>
                        <div class="card-content collapse @if( $errors->any() ) show @endif">
                            <div class="card-body">
                                <form action="{!! route('admin::users.index') !!}" method="get">
                                    <div class="form-body">

                                        <div class="row">
                                            <div class="col-6 form-group">
                                                <label for="search">جستجو</label>
                                                <input type="text" name="search" id="search" class="form-control"
                                                       placeholder="جستجو..."
                                                       aria-label="جستجو" value="{{ request()->query('search') }}">
                                            </div>

                                            <div class="col-6 form-group">
                                                <label for="user_type">گروه کاربری</label>
                                                <select id="user_type" name="user_type" class="form-control">
                                                    <option value="" {{ (request()->query('user_type') == '')? "selected" : "" }}>-</option>
                                                    <option value="is_special" {{ (request()->query('user_type') == 'is_special')? "selected" : "" }}>کاربر ویژه</option>
                                                    <option value="is_user" {{ (request()->query('user_type') == 'is_user')? "selected" : "" }}>کاربر عادی</option>
                                                    <option value="is_admin" {{ (request()->query('user_type') == 'is_admin')? "selected" : "" }}>مدیریت سیستم</option>
                                                </select>
                                            </div>

                                            <div class="col-6 form-group">
                                                <label for="target">فیلتر کاربران</label>
                                                <select id="target" name="target" class="form-control">
                                                    <option value="" {{ (request()->query('target') == '')? "selected" : "" }}>-</option>
                                                    <option value="active" {{ (request()->query('target') == 'active')? "selected" : "" }}>کاربر ویژه</option>
                                                    <option value="orderedAtLeastOnce" {{ (request()->query('target') == 'orderedAtLeastOnce')? "selected" : "" }}>کاربر عادی</option>
                                                    <option value="orderedInLastMonth" {{ (request()->query('target') == 'orderedInLastMonth')? "selected" : "" }}>مدیریت سیستم</option>
                                                    <option value="neverOrdered" {{ (request()->query('target') == 'neverOrdered')? "selected" : "" }}>مدیریت سیستم</option>
                                                </select>
                                            </div>

                                            <div class="col-md-6 form-group">
                                                <label for="categoryId">دسته بندی</label>

                                                {!! Form::select('categoryId', \Modules\Category\Entities\Category::whereNull('parentId')->get()->pluck('title', 'id')->toArray(), null, [
                                                      'class' => 'form-control',
                                                      'id' => 'categoryId',
                                                      'placeholder' => 'انتخاب دسته بندی',
                                                  ]) !!}
                                            </div>
                                        </div>
                                        <div class="d-flex justify-content-between form-actions pb-0">
                                            <div>
                                                <button type="submit" class="btn btn-primary">ارسال <i class="ft-send position-right"></i>
                                                </button>
                                                <button type="reset" class="btn btn-warning">ریست <i class="ft-refresh-cw position-right"></i>
                                                </button>
                                            </div>
                                            <div>
                                                <a href="{!! route('admin::users.export-excel') !!}" class="btn btn-success">
                                                    <i class="la la-download"></i>
                                                    صادر
                                                </a>
                                                <a href="{!! route('admin::users.export-filter') !!}" class="btn btn-success">
                                                    <i class="la la-download"></i>
                                                    Export Filter
                                                </a>
                                                <a href="{!! route('admin::users.export-special-excel') !!}" class="btn btn-success">
                                                    <i class="la la-download"></i>
                                                    صدور کاربران ویژه
                                                </a>
                                                <a href="{!! route('admin::users.import-excel') !!}" class="btn btn-primary">
                                                    <i class="la la-cloud-download"></i>
                                                    آپلود
                                                </a>
                                            </div>
                                        </div>
                                    </div>
                                </form>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="row">
                <div id="recent-transactions" class="col-xl-12 col-12">
                    <div class="card">
                        <div class="card-header">
                            <div class="row">
                                <div class="col-md">
                                    <div class="row justify-content-between align-items-center mr-md-1 mb-1">
                                        <div class="col-sm">
                                            <h4 class="card-title mb-2 mb-sm-0">فهرست کاربران</h4>
                                        </div>
                                    </div>
                                </div>
                                <div class="col-auto">
                                    <a href="{!! route('admin::users.create') !!}" class="btn btn-info">
                                        <i class="la la-plus"></i>
                                        ایجاد کاربر جدید
                                    </a>
                                </div>

                            </div>
                        </div>
                        <div class="card-content">
                            @if( $users->count() > 0 )
                                @includeWhen( Module::find('notification') && request()->has('search'), 'user::admin.users._notification' )
                                <div class="table-responsive">
                                    <table id="recent-orders" class="table table-hover table-xl mb-0">
                                        <thead>
                                        <tr>
                                            <th class="border-top-0"># شناسه</th>
                                            <th class="border-top-0">نام و نام خانوادگی</th>
                                            <th class="border-top-0">موبایل</th>
                                            {{--                      <th class="border-top-0">ایمیل</th>--}}
                                            <th class="border-top-0">کد ملی</th>
                                            <th class="border-top-0">مدیر</th>
                                            <th class="border-top-0">وضعیت</th>
                                            <th class="border-top-0">ویژه</th>
                                            <th class="border-top-0">آخرین ورود</th>
                                            <th class="border-top-0">عملیات</th>
                                        </tr>
                                        </thead>
                                        <tbody>
                                        @foreach($users as $user)
                                            <tr>
                                                <td class="text-truncate">
                                                    <i class="la la-dot-circle-o success font-medium-1 mr-1"></i>
                                                    {{ $user->id }}
                                                </td>
                                                <td class="text-wrap">
                                                    {{ $user->first_name.' '.$user->last_name }}
                                                </td>
                                                <td class="text-wrap">
                                                    {{ $user->mobile }}
                                                </td>
                                                {{--<td class="text-wrap">
                                                  {{ $user->email }}
                                                </td>--}}
                                                <td class="text-wrap">
                                                    {{ $user->national_id }}
                                                </td>
                                                <td class="text-wrap">
                                                    @if( $user->is_admin )
                                                        <i class="ft-check-circle text-success"></i>
                                                    @else
                                                        <i class="ft-x-circle text-danger"></i>
                                                    @endif
                                                </td>
                                                <td class="text-wrap">
                                                    @if( !$user->disabled_at )
                                                        <i class="ft-check-circle text-success"></i>
                                                    @else
                                                        <i class="ft-x-circle text-danger"></i>
                                                    @endif
                                                </td>
                                                <td class="text-wrap">
                                                    @if( $user->is_special_user == 1 )
                                                        <i class="ft-check-circle text-success"></i>
                                                    @else
                                                        <i class="ft-x-circle text-danger"></i>
                                                    @endif
                                                </td>
                                                <td class="text-wrap">
                                                    @if( $user->last_login_at )
                                                        {{ getShamsiDate($user->last_login_at) }}
                                                    @else
                                                        —
                                                    @endif
                                                </td>
                                                <td>
                                                    <div class="row flex-nowrap">
                                                        <a href="{{ route('admin::users.show', $user) }}" class="mr-1">
                                                            <i class="ft-eye text-grey text-shadow-custom font-medium-5 font-weight-normal"></i>
                                                        </a>
                                                        <a href="{{ route('admin::users.edit', $user) }}" class="mr-1">
                                                            <i class="ft-edit text-grey text-shadow-custom font-medium-4 font-weight-normal"></i>
                                                        </a>

                                                        <form action="{{ route('admin::users.destroy', $user) }}"
                                                              method="post"
                                                              @submit.prevent="confirmDelete">
                                                            @method('delete')
                                                            @csrf
                                                            <button type="submit" class="btn btn-default p-0">
                                                                <i class="ft-trash-2 text-grey font-medium-5 font-weight-normal"></i>
                                                            </button>
                                                        </form>
                                                    </div>
                                                </td>
                                            </tr>
                                        @endforeach
                                        </tbody>
                                    </table>
                                    <div class="pagination-flat">
                                        {{ $users->links() }}
                                    </div>
                                </div>
                            @else
                                <div class="text-center my-2">
                                    <p>نتیجه‌ای برای نمایش وجود ندارد.</p>
                                </div>
                            @endif
                        </div>
                    </div>
                </div>
            </div>
        </section>
    </div>
@endsection

我收到此错误

导出提交按钮会将所有内容发送到Excel.我如何使其仅发送经过过滤的数据.谢谢

The export submit button is sending everything to Excel. How do I make it to send only the filtered data. Thanks

推荐答案

您需要摆脱视图中的其他HTML,例如表单,输入和按钮.将视图仅保留到Excel所需表的最小值.

You need to get rid of the other HTML in your view such as forms, inputs, and buttons. Keep the view only to a minimum of the table that needed for your Excel.

这篇关于无法加载excel \ laravel-excel的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆