简体   繁体   中英

How Export only specific columns from Laravel Blade table view to Ecxel file?

So I have a table on blade view file, I have successfully exported it into the excel file. Now I want to export without exporting the 'Actions" column. How can I do that?

I have attached my code and blade file below, it works perfectly. I just want to export everything except the Actions Column as it contains Buttons for Database Operations

THIS IS MY EXPORT CLASS CODE:

public function view(): View
{
    return view ('ims.view_inventory_history_table', [
        'data' => inbound_history::all()
        ]);
}

public function headings(): array
{
    return [
        'ID',
        'Warehouse',
        'SKU',
        'Child SKU',
        'Units',
        'Invoice No.',
        'Container No.',
        'Entry Date'
    ];}

/**
 * @return array
 */
public function registerEvents(): array
{
    return [
        AfterSheet::class    => function(AfterSheet $event) {
            $cellRange = 'A1:W1'; // All headers
            $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);
        },
    ];
}}

THIS IS MY CONTROLLER FUNCTION:

public function export_view()
{
    return Excel::download(new inboundHistory(), 'inboundHistory.xlsx');
}

THIS IS MY ROUTE:

Route::Get('inbound_history/export_view' ,'imsController@export_view')->name('inbound_history.export_view');

THIS IS MY BLADE TABLE VIEW:

<table id="datatables" class="table table-striped table-no-bordered table-hover" cellspacing="0" width="100%" style="width:100%">
<thead>
  <tr>
    <th style="width:5%">ID</th>
    <th>Warehouse</th>
    <th>SKU</th>
    <th>Child SKU</th>
    <th>Cases</th>
    <th>Units</th>
    <th>Invoice No.</th>
    <th>Container No.</th>
    <th>Entry Date</th>
    <th class="disabled-sorting text-right" style="width:12%">Actions</th>
  </tr>
</thead>
<tbody>
  @foreach ($data as $row)
  <tr>
    <td>{{$row['id']}}</td>
    <td>{{$row['warehouse']}}</td>
    <td>{{$row['sku_parent']}}</td>
    <td>{{$row['sku_child']}}</td>
    <td>{{$row['total_cases']}}</td>
    <td>{{$row['total_units']}}</td>
    <td>{{$row['invoice_no']}}</td>
    <td>{{$row['container_no']}}</td>
    <td>{{$row['date_rec']}}</td>
    <td class="td-actions text-right">
    {{-- <a rel="tooltip" class="btn btn-success btn-link" href="{{action('imsController@edit',$row['id'])}}">
          <i class="material-icons">edit</i></a> --}}
        
          <a rel="tooltip" class="btn btn-danger btn-link" href="{{action('imsController@destroy',$row['id'])}}" onclick = "if (! confirm('Confirm: Press OK to delete the Entry.')) { return false; }"style="color: red;">
            <i class="material-icons">close</i></a>
    </td>
  </tr>
  @endforeach
</tbody>

I don't know if I got everything correctly, but why don't you do something like this:

Pass an additional variable to your blade template like $isView , when you want to create a view for the user.

And in your blade.php template you do something like this:

@isset($isView)
<th class="disabled-sorting text-right" style="width:12%">Actions</th>
@endisset
// do the same @isset test for the corresponding <td> element

When you want to render it to excel you just don't pass this variable and the column is not rendered.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM