Laravel Yajra Datatables导出到Excel CSV按钮

Laravel Yajra Datatables导出到Excel CSV按钮

在这一部分中,我们将学习Yajra Datatables导出为Excel CSV按钮。我们将使用Laravel来完成这个操作。我们可以在Laravel版本6、7和8中创建。在这个示例中,我们将看到使用Laravel Yajra DataTables添加CSV Excel按钮的过程。我们可以使用yajra/laravel-datatables-buttons包来添加导出按钮。我们将使用我们的datatables来导出按钮。我们的表格数据可以很容易地导出为CSV文件或XLSX文件。为了从datatable导出CSV Excel文件,我们将在Laravel应用程序中使用以下逐步过程。

步骤1:

在第一步中,我们将安装Laravel。如果我们的系统中没有安装Laravel设置,我们需要为这个示例安装最新的Laravel版本7。我们可以使用以下命令获取Laravel:

composer create-project --prefer-dist laravel/laravel blog

步骤2:

在第二步中,我们将会 安装Yajra DataTables 。我们将会安装Yajra Datatable composer包。通过使用这个包,我们能够获得datatable还有导出按钮yajra/laravel-datatables-buttons。我们将使用以下命令来安装它:

composer require yajra/laravel-datatables-oracle
composer require yajra/laravel-datatables-buttons

当我们完成Yajra datatable的安装后,我们需要设置别名和提供程序。

config/app.php:

.....
'providers' => [
    ....
    Yajra\DataTables\DataTablesServiceProvider::class,
    Yajra\DataTables\ButtonsServiceProvider::class,
]
'aliases' => [
    ....
    'DataTables' => Yajra\DataTables\Facades\DataTables::class,
]
.....

在此之后,我们需要进行文件配置。因此,我们将使用以下命令获取文件:

php artisan vendor:publish --tag=datatables-buttons

步骤3:

在这一步中,我们将要 添加虚拟记录 。我们将使用tinker工厂来创建虚拟用户。创建虚拟记录的命令如下:

php artisan tinker
factory(App\User::class, 200)->create();

步骤4:

在这一步中,我们将要创建DataTable类。我们将使用Yajra Datatable的命令,以便我们可以创建一个名为User DataTable的类,具体如下所述:

php artisan datatables:make Users

执行上述命令后,我们将为DataTable创建一个新的类文件。在这个文件中,我们将添加按钮、列和许多其他内容,如下所示:

app/DataTables/UsersDataTable.php:

<?php

namespace App\DataTables;

use App\User;
use Yajra\DataTables\Html\Button;
use Yajra\DataTables\Html\Column;
use Yajra\DataTables\Html\Editor\Editor;
use Yajra\DataTables\Html\Editor\Fields;
use Yajra\DataTables\Services\DataTable;

class UsersDataTable extends DataTable
{
    /**
     * It is used to Build a class of DataTable.
     *
     * @param mixed query Results from query() method.
     * @return \Yajra\DataTables\DataTableAbstract
     */
    public function dataTable(query)
    {
        return datatables()
            ->eloquent(query);
    }

    /**
     * It is used to get query sources of dataTable.
     *
     * @param \App\Usermodel
     * @return \Illuminate\Database\Eloquent\Builder
     */
    public function query(User model)
    {
        returnmodel->newQuery();
    }

    /**
     * If you want to use html builder, it is the optional method.
     *
     * @return \Yajra\DataTables\Html\Builder
     */
    public function html()
    {
        return this->builder()
                    ->setTableId('users-table')
                    ->columns(this->getColumns())
                    ->minifiedAjax()
                    ->orderBy(1)
                    ->parameters([
                        'dom'          => 'Bfrtip',
                        'buttons'      => ['excel', 'csv'],
                    ]);
    }

    /**
     * It is used to get columns.
     *
     * @return array
     */
    protected function getColumns()
    {
        return [
            Column::make('id'),
            Column::make('name'),
            Column::make('email'),
        ];
    }

    /**
     * It is used to get the filename for export.
     *
     * @return string
     */
    protected function filename()
    {
        return 'Users_' . date('YmdHis');
    }
}

步骤5:

在第五步中,我们将 添加路由 。我们将为datatables布局文件创建此路由。使用这个路由,我们可以获取数据。为此,我们将使用我们的文件routes/web.php,然后我们将放置下面的路由:

routes/web.php:

Route::get('users', 'UserController@index');

步骤6:

在这一步中,我们将创建控制器。我们将创建UserController作为一个新的控制器。使用这个控制器,我们可以管理布局,并处理数据的请求和返回响应。现在我们将使用控制器文件,并将以下内容添加到其中:

app/Http/Controllers/UserController.php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\DataTables\UsersDataTable;

class UserController extends Controller
{
    /**
     * It is used to display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(UsersDataTable dataTable)
    {
        returndataTable->render('users');
    }
}

步骤7:

这是最后一步。在第七步中,我们将会 创建视图 。为了创建布局,我们将使用users.blade.php文件。这个文件将用于编写设计代码。我们将把以下代码添加到那个文件中:

resources/views/users.blade.php:

<!DOCTYPE html>
<html>
<head>
    <title> Yajra Datatables Export to Excel Button in Laravel </title>
    <meta name="csrf-token" content="{{ csrf_token() }}">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
    <link href="https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css" rel="stylesheet">
    <link href="https://cdn.datatables.net/1.10.19/css/dataTables.bootstrap4.min.css" rel="stylesheet">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>  
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.0/jquery.validate.js"></script>
    <script src="https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
    <script src="https://cdn.datatables.net/1.10.19/js/dataTables.bootstrap4.min.js"></script>
    <script src="https://cdn.datatables.net/buttons/1.0.3/js/dataTables.buttons.min.js"></script>
    <link rel="stylesheet" href="https://cdn.datatables.net/buttons/1.0.3/css/buttons.dataTables.min.css">
    <script src="/vendor/datatables/buttons.server-side.js"></script>
</head>
<body>

<div class="container">
    <h1> Yajra Datatables Export to Excel Button in Laravel </h1>

    {!! dataTable->table() !!}
</div>

</body>

{!!dataTable->scripts() !!}

</html>

现在,我们的上述代码已经准备就绪。为了快速运行上述代码,我们将使用以下命令:

php artisan serve

现在我们可以使用浏览器打开以下链接:

http://localhost:8000/myproducts

打开后,我们可以看到以下输出:

Laravel Yajra Datatables导出到Excel CSV按钮

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程