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
打开后,我们可以看到以下输出: