How to Import and Export Excel and CSV Files in Laravel 9

how-to-import-and-export-excel-and-csv-files-in-laravel-9

Laravel 9 is a popular PHP framework that makes it easy to build robust and scalable web applications. One of the important features of any web application is the ability to import and export data in different formats. This can be particularly useful when you need to transfer data from one system to another, or when you need to store data for later use. In this tutorial, we’ll look at how to import and export Excel and CSV files in Laravel 9 using the MaatwebsiteExcel package.

The MaatwebsiteExcel package is a popular package that makes it easy to work with Excel and CSV files in Laravel. It provides a simple API that you can use to import and export data with just a few lines of code. This package also supports multiple file formats, so you can choose the format that works best for your needs.

Step 1: Install the Package

To get started, you need to install the MaatwebsiteExcel package. You can install it using composer:

composer require maatwebsite/excel

Step 2: Create a Model

In this step, you need to create a model that represents the data you want to import and export. For example, if you want to import and export products, you can create a Product model.

php artisan make:model Product

Step 3: Create a Migration

Next, you need to create a migration that creates the products table in your database. You can use the following command to create a migration:

php artisan make:migration create_products_table

If you would like to generate a database migration when you generate the model, you may use the --migration or -m option in step 2

Then, open the created migration file and add the following code:

public function up()
{
    Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->string('name');
        $table->text('description');
        $table->double('price');
        $table->timestamps();
    });
}

Finally, run the following command to apply the migration:

php artisan migrate

Step 4: Create a Controller

Now, you need to create a controller that will handle the import and export operations. You can create a controller using the following command:

php artisan make:controller ProductController

Step 5: Import Data

In this step, you’ll add the code that imports the data from the Excel or CSV file into the products table in your database. Open the ProductController file and add the following code:

//...
use IlluminateHttpRequest;
use MaatwebsiteExcelFacadesExcel;
use AppModelsProduct;

class ProductController extends Controller
{
    public function index()
    {
        return view('import');
    }
    //...
    public function import(Request $request)
    {
        $file = $request->file('file');
        Excel::import(new ProductsImport, $file);
        return back()->with('success', 'Products imported successfully.');
    }
}

In this code, you first retrieve the uploaded file from the request object. Then, you import data to ProductsImport using the import method of the Excel façade. This class extends the MaatwebsiteExcelConcernsToModel interface, which provides the necessary methods for importing data from an Excel or CSV file into a database table.

php artisan make:import ProductsImport --model=Product

This will create a new file named ProductsImport.php in the app/Imports directory. The --model=Product option specifies the name of the model class that will be used to store the imported data.

use MaatwebsiteExcelConcernsToModel;
use IlluminateSupportFacadesHash;
use AppModelsProduct;

class ProductsImport implements ToModel
{
    public function model(array $row)
    {
        return new Product([
            'name' => $row[0],
            'description' => $row[1],
            'price' => $row[2],
        ]);
    }
}

This code implements the ProductsImport class and implements the model method, which takes an array of data for each row as an argument and returns a new Product model instance populated with the data from that row.

Step 6: Export Data

In this step, you’ll add the code that exports the data from the products table in your database to an Excel or CSV file. Open the ProductController file and add the following code:

//....
class ProductController extends Controller
{
    //...
    public function export()
    {
        return Excel::download(new ProductsExport, 'products.xlsx');
    }
}

In this code, you use the download method of the Excel facade to download the data from the ProductsExport class. The ProductsExport class is responsible for preparing the data that needs to be exported. To create this class, you can use the following command:

php artisan make:export ProductsExport --model=Product

This command will create a new export class in the app/Exports directory. Open this file and add the following code:

use MaatwebsiteExcelConcernsFromCollection;
use AppProduct;
class ProductsExport implements FromCollection
{
    public function collection()
    {
        return Product::all();
    }
}

In this code, you implement the FromCollection interface, which requires you to implement the collection method. In this method, you return the collection of all products using the all method of the Product model.

Step 7: Add Routes

Finally, you need to add routes for the import and export operations. Open the routes/web.php file and add the following code:

Route::get('/import', [ProductController::class,"index"]);
Route::post('/import', [ProductController::class,"import"]);
Route::get('/export', [ProductController::class,"export"]);

In this code, you add two routes for the import operation, one for the GET request and one for the POST request. The GET request is used to display the form for uploading the file, and the POST request is used to handle the file upload and import the data. You also add a route for the export operation, which returns the Excel or CSV file with the data.

Step 8: Create the View

Finally, you need to create a view that will have the form to import the file and a button to export the data.

 action="{{ url('/import') }}" method="post" enctype="multipart/form-data">
    @csrf
     type="file" name="file">
     type="submit">Import


 href="{{ url('/export') }}">Export

That’s it! You now have a complete Laravel 9 application that can import and export Excel and CSV files. You can customize this code as per your requirements. You can add validation to the imported data, and you can also add a confirmation message before exporting the data.

Conclusion

In this tutorial, you learned how to import and export Excel and CSV files in Laravel 9 using the MaatwebsiteExcel package. This package provides a simple and easy-to-use API that makes it possible to import and export data with just a few lines of code. You can use this package to handle data transfer between different systems or to store data for later use. With the help of this package, you can simplify your data import and export process and improve the efficiency of your web application.I hope this tutorial helps you in your Laravel projects.Happy coding!

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post
django:-the-high-level-python-web-framework-for-effortless-and-secure-web-development

Django: The High-Level Python Web Framework for Effortless and Secure Web Development

Next Post
stakeholder-engagement-essentials-you-always-wanted-to-know-(book-review)

Stakeholder Engagement Essentials You Always Wanted To Know (Book Review)

Related Posts