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>
Advertisement
Answer
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.