在Laravel 5中使用Maatwebsite将数据导入导出到Excel和CSV

在Laravel 5中使用Maatwebsite将数据导入导出到Excel和CSV

在这一部分中,我们将使用Maatwebsite来实现导入和导出CSV和Excel的功能。我们将使用Laravel 5来实现这个功能。我们将使用数据库来存储导入的CSV或Excel文件。通过使用Maatwebsite,我们可以从数据库的表中下载或导出CSV或Excel文件。

我们可以通过使用Maatwebsite包轻松地获取数据。它还可以用于对数据进行分组,并且我们可以创建多个工作表。在下面的示例中,我们描述了items表的数据。我们可以使用CSV、XLS和XLSV格式来下载它,并且我们还可以使用CSV、XLS和XLSX文件来导入数据。在我们的Laravel 5项目中,我们可以按照以下逐步过程来实现导出和导入功能:

步骤1:

在这一步中,我们将进行 安装 。我们将使用名为composer.json的文件,然后使用所需的软件包,并根据我们的Laravel版本将以下行放入其中。

Laravel 5

"maatwebsite/excel": "~2.1.0"

Laravel 4

"maatwebsite/excel": "~1.3"

现在我们将运行以下命令:

Composer update 

现在我们将使用名为config/app.php的文件,然后将别名和服务提供者添加到其中:

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

配置

如果我们使用Laravel 5,我们将使用以下命令:

php artisan vendor:publish

如果我们使用Laravel 4,我们将使用以下命令:

php artisan config:publish maatwebsite/excel

为了创建一个配置文件,以下命令将非常有用。该文件将用于 Excel 包中。

步骤2:

在第二步中,我们将要 创建表格和模型 。我们将使用 item 表格创建一个迁移。使用 Laravel 5 的 php artisan 命令来完成此操作,具体描述如下:

php artisan make:migration create_items_table

当我们成功执行上述命令时,我们将使用 database/migrations 路径获取一个文件。现在我们将使用我们的迁移文件,并将以下代码添加到其中,以创建如下的项目表:

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateItemsTable extends Migration
{
   public function up()
   {
       Schema::create('items', function (Blueprint table) {table->increments('id');
           table->string('title');table->text('description');
           $table->timestamps();
       });
   }
   public function down()
   {
       Schema::drop("items");
   }
}

当我们成功创建这个“items”表格后,我们需要创建一个Item模型。为此,我们将使用app/Item.php路径,然后我们将把以下代码添加到其中:

app/item.php:

namespace App;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
   public $fillable = ['title','description'];
}

步骤3:

在这一步中,我们要 创建路由 。我们将为导入导出文件创建路由。为此,我们将使用名为app/Http/routes.php的文件,然后添加以下路由:

Route::get('importExport', 'MaatwebsiteDemoController@importExport');
Route::get('downloadExcel/{type}', 'MaatwebsiteDemoController@downloadExcel');
Route::post('importExcel', 'MaatwebsiteDemoController@importExcel');

步骤4:

在此文件中,我们要 创建控制器 。我们将创建 MaatwebsiteDemoController 作为一个新的控制器。我们将使用app/Http/Controllers/MaatwebsiteDemoController.php路径来创建这个控制器。所有importExcel请求、importExport、返回响应和downloadExcel都可以由此控制器管理。现在我们将使用控制器文件并将以下内容添加到其中:

app/Http/Controllers/MaatwebsiteDemoController.php:

use Input;
use App\Item;
use DB;
use Excel;
class MaatwebsiteDemoController extends Controller
{
    public function importExport()
    {
        return view('importExport');
    }
    public function downloadExcel(type)
    {data = Item::get()->toArray();
        return Excel::create(?javatpoint?_example', function(excel) use (data) {
            excel->sheet('mySheet', function(sheet) use (data)
            {sheet->fromArray(data);
            });
        })->download(type);
    }
    public function importExcel()
    {
        if(Input::hasFile('import_file')){
            path = Input::file('import_file')->getRealPath();data = Excel::load(path, function(reader) {
            })->get();
            if(!empty(data) &&data->count()){
                foreach (data askey => value) {insert[] = ['title' => value->title, 'description' =>value->description];
                }
                if(!empty(insert)){
                    DB::table('items')->insert(insert);
                    dd('Insert Record successfully.');
                }
            }
        }
        return back();
    }
}

步骤5:

在这一步中,我们将 创建视图 . 我们将通过创建名为importExport.blade.php的文件来创建布局。这个文件将用于编写设计代码。我们将把以下代码添加到该文件中:

importExport.blade.php:

<html lang="en">
<head>
    <title>Import - Export Laravel 5</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
</head>
<body>
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <div class="navbar-header">
                <a class="navbar-brand" href="#"> Laravel 5 - Import and Export CSV and Excel </a>
            </div>
        </div>
    </nav>
    <div class="container">
        <a href="{{ URL::to('downloadExcel/xls') }}"><button class="btn btn-success">Download Excel xls</button></a>
        <a href="{{ URL::to('downloadExcel/xlsx') }}"><button class="btn btn-success">Download Excel xlsx</button></a>
        <a href="{{ URL::to('downloadExcel/csv') }}"><button class="btn btn-success">Download CSV</button></a>
        <form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 10px;" action="{{ URL::to('importExcel') }}" class="form-horizontal" method="post" enctype="multipart/form-data">
            <input type="file" name="import_file" />
            <button class="btn btn-primary">Import File</button>
        </form>
    </div>
</body>
</html>

现在我们的上述脚本已经准备好运行了。为了快速运行上述脚本,我们将使用我们的浏览器。当我们打开浏览器时,我们将看到如下的预览:

在Laravel 5中使用Maatwebsite将数据导入导出到Excel和CSV

导入文件:

在Laravel 5中使用Maatwebsite将数据导入导出到Excel和CSV

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程