在Laravel 5.8中导入和导出CSV文件

在Laravel 5.8中导入和导出CSV文件

在这个部分,我们将使用Laravel 5.8来导入和导出CSV文件。在创建管理项目时,主要要求是从数据库中导入或导出CSV或Excel文件。我们将使用maatwebsite/excel的版本3来导入和导出Excel文件或CSV文件,在 Laravel 5.8的应用程序中。

为了执行导入和导出任务,我们将使用maatwebsite/excel的composer包。maatwebsite/excel使用数据库模型,以便可以提供一种简便的方式来导出和导入。通过使用Excel或maatwebsite的最新版本3,我们可以轻松地导出或导入所需的数据表单数据库。在我们的部分,我们提供了逐步执行导出和导入的过程,如下所述:

步骤1:

在这一步中,我们将 安装Laravel 5.8应用程序 。为此,我们将使用以下命令。所以我们将打开我们的CMD或终端在我们的系统,然后运行如下命令:

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

步骤2:

在第二步中,我们将要 安装Maatwebsite包 。为此,我们将使用Composer软件包管理器。为此,我们将打开我们的终端并运行以下命令:

composer require maatwebsite/excel

现在我们将打开名为config/app.php的文件。然后我们将添加别名和服务提供者。

config/app.php

'providers' => [
    ....
    Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
    ....
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],

步骤3:

在第三步中,我们将 创建伪数据记录 。为了做到这一点,我们需要一个“users”表,其中包含一些伪数据记录。之后,我们可以轻松地进行导入和导出。Laravel提供了一些默认的迁移。为了进行导入和导出,我们需要运行该迁移。所以我们将使用以下命令运行迁移:

php artisan migrate

现在我们需要添加一些虚假记录。因此我们将运行以下命令,并向用户文件中添加一些记录。

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

步骤4:

在第四步中,我们将要 添加路由器 。为此,我们将创建一个导出和导入文件的路径。所以我们将打开名为“routes/web.php”的文件。之后,我们将添加以下路由:

routes/web.php

Route::get('export', 'MyController@export')->name('export');
Route::get('importExportView', 'MyController@importExportView');
Route::post('import', 'MyController@import')->name('import');

步骤5:

在第五步中,我们将创建一个导入类。

为了做到这一点,我们将使用 maatwebsite 3 版本来构建导入类。我们将使用控制器来使用它。当我们使用这种方式创建一个新的导入类时,我们将发现这是一个很好的导入类创建方式。为此,我们将运行以下代码:

php artisan make:import UsersImport --model=User

现在我们打开名为app/Import/UsersImport.php的文件,并在该文件中进行一些更改,具体如下:

app/Imports/UsersImport.php

<?php

namespace App\Imports;

use App\User;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;

class UsersImport implements ToModel, WithHeadingRow
{
    /**
    * @param array row
    *
    * It will return \Illuminate\Database\Eloquent\Model|null
    */
    public function model(arrayrow)
    {
        return new User([
            'name'     => row['name'],
            'email'    =>row['email'], 
            'password' => \Hash::make($row['password']),
        ]);
    }
}

步骤6:

在第六步中,我们要创建导出类。 为了做到这一点,我们将使用maatwebsite 3版本来构建导出类。我们将使用控制器来使用它。当我们通过这种方式创建一个新的导出类时,我们将意识到这是一个很好的创建导出类的方式。为此,我们将运行以下代码:

php artisan make:export UsersExport --model=User

现在我们打开名为app/Export/UsersExport.php的文件,并对该文件进行一些更改,具体如下:

app/Exports/UsersExport.php

<?php

namespace App\Exports;

use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;

class UsersExport implements FromCollection
{
    /**
    * It will return \Illuminate\Support\Collection
    */
    public function collection()
    {
        return User::all();
    }
}

步骤7:

在第七步中,我们将**创建控制器。我们将使用路径”app/Http/Controllers/MyController.php”来创建一个名为MyController的新控制器。通过这个控制器,可以轻松管理importExport请求的视图和import和export的响应。为此,我们将在控制器文件中添加以下内容,具体描述如下:

app/Http/Controllers/MyController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Exports\UsersExport;
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;

class MyController extends Controller
{
    /**
    * It will return \Illuminate\Support\Collection
    */
    public function importExportView()
    {
       return view('import');
    }

    /**
    * It will return \Illuminate\Support\Collection
    */
    public function export() 
    {
        return Excel::download(new UsersExport, 'users.xlsx');
    }

    /**
    * It will return \Illuminate\Support\Collection
    */
    public function import() 
    {
        Excel::import(new UsersImport,request()->file('file'));

        return back();
    }
}

步骤8:

第八步是最后一步,用于创建Blade文件。为此,我们将创建一个名为import.blade.php的布局文件。我们将编写一些代码,描述如下:

resources/views/import.blade.php

<!DOCTYPE html>
<html>
<head>
    <title> Import and Export Excel data to database Using Laravel 5.8 </title>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" />
</head>
<body>

<div class="container">
    <div class="card bg-light mt-3">
        <div class="card-header">
            Import and Export Excel data to database Using Laravel 5.8
        </div>
        <div class="card-body">
            <form action="{{ route('import') }}" method="POST" enctype="multipart/form-data">
                @csrf
                <input type="file" name="file" class="form-control">
                <br>
                <button class="btn btn-success">Import User Data</button>
                <a class="btn btn-warning" href="{{ route('export') }}">Export User Data</a>
            </form>
        </div>
    </div>
</div>

</body>
</html>

使用上述代码,我们可以在Laravel 5.8中轻松将所需数据导出和导入到CSV文件中。为了运行上述代码,我们需要启动Laravel 5.8的服务器。为此,我们将打开终端或命令提示符,运行以下命令:

php artisan serve

通过上述命令,我们可以启动Laravel服务器。它将提供Laravel应用程序的基本URL。我们将打开浏览器并输入以下URL来测试导入和导出数据的操作。

http://127.0.0.1:8000/import-excel

在输入以上的网址后,我们将会看到以下输出:

在Laravel 5.8中导入和导出CSV文件

现在我们必须选择Excel文件,以便可以上传它。在选择文件之前,我们必须创建一个像这样的Excel文件:

在Laravel 5.8中导入和导出CSV文件

现在我们将选择像这样的sample.csv文件:

在Laravel 5.8中导入和导出CSV文件

现在,我们将点击“导入文件”选项。

在Laravel 5.8中导入和导出CSV文件

在上面的图像中,我们可以看到我们的示例文件成功导入。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程