Sunday, September 4, 2016

How to Export CSV/xls/xlsx from Model in Laravel | How to Download Table Data / Database to CSV /xls / xlsx in Laravel?

laravel export csv


In this tutorial I have shown you how you can download/ Export database to CSV/ xls/ xlsx. Sometimes we need to download the database as csv or excel format for seeing the report of the project. Here we used Maatwebsite/Laravel-Excel package for generating the csv or excel format.
So lets see how we can do it..


1. First we need to install the Maatwebsite/Laravel-Excel package in our laravel project. Installing process has fully described in documentation itself. Bu if you find any difficulty you can comment it here.

3. Let's create a Model  and database with  name 'Item' with the following command in cmd inside of your project :

php artisan make:model Item  -m  
4. Use following code in Model name Item.php :
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Item extends Model
{
     public $fillable = ['title','description'];
}
5. Now go to migration file and change the following code with the existing code:
<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateItemsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('items', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('description');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('items');
    }
}
6. Now run the following command in cmd inside of your project. This command will generate the database with title and description in items table which is in phpmyadmin.
php artisan migrate

7. Let's put some demo data on your database table in phpmyadmin.


phpmyadmin


8. Now go to route and write the following code in routes.php

<?php

Route::get('importExport', 'ImportController@importExport');
Route::get('downloadExcel/{type}', 'ImportController@downloadExcel');


9. Now let's create Importcontroller.php using following code:
php artisan make:controller ImportController  

10.  Now change the following  code with the existing code of Importcontroller.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use DB;
use Excel;
use App\Item;
use Illuminate\Support\Facades\Input;
use Validator;
use Illuminate\Support\Facades\Redirect;

class ImportController extends Controller
{
    public function importExport()
 {
  return view('importExport');
 }
 public function downloadExcel($type)
 {
  
         if($type == 'csv'){
                $data = Item::get()->toArray();
                return Excel::create('demo_example', function($excel) use ($data) {
                    $excel->sheet('mySheet', function($sheet) use ($data)
                         {
                                $sheet->fromArray($data);
                             header('Content-Encoding: UTF-8');
                                header('Content-type: text/csv; charset=UTF-8');
                            header('Content-Disposition: attachment; filename=itsolutionstuff_example.csv');
                            echo "\xEF\xBB\xBF";
                        });
                        })->download($type);
             }

        else {
                    $data = Item::get()->toArray();
                    return Excel::create('itsolutionstuff_example', function($excel) use ($data) {
                     $excel->sheet('mySheet', function($sheet) use ($data)
                      {
                           $sheet->fromArray($data);
                        });
                     })->download($type);
        }
   
    }
}
* The above code is UTF-8 support. So anytime language is suitable for the above code.

11. Now let's create the view page and name it as importExpor.blade.php and use the following code:
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Export Laravel </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="#"> Export in Excel and CSV in Laravel </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> 
 </div>
</body>
</html>


12. Now if you access the route you'll see the view page and by clicking on any button you can download the required data from the table.


demo


I hope this tutorial will help you to download the excel or csv from database.















Related Articles

0 comments:

Post a Comment