2016-08-13 60 views
0

我從maatwebsite使用Laravel Excel,但導出數據到xls文件時出現問題。我有這個查詢,但我不需要顯示xls文件中的所有列,但我需要選擇所有這些列以在下載文件之前執行操作。在我的選擇我有8列,但在我的頭我只有7顯示,但這不起作用,因爲8ª列也出現。Laravel Excel - 選擇要導出的列

我的功能:

public function toExcel($id) { $b = Budget::find($id); 

$budget = Budget_Item::join('budgets', 'budget__items.id_budget', '=', 'budgets.id') 
    ->join('items_sizes', 'budget__items.id_itemSize', '=', 'items_sizes.id') 
    ->join('items', 'items_sizes.id_item', '=', 'items.id') 
    ->join('material_types', 'items_sizes.id_materialType', '=', 'material_types.id') 
    ->select('items.reference AS Referência', 'items.name AS Descrição', 'items_sizes.size AS Tamanho', 'material_types.material_type AS Material', 'budget__items.amount AS Quantidade', 'items_sizes.unit_price AS Val.Unitário', 'budget__items.price AS Val.Total', 'budget__items.purchasePrice') 
    ->where('id_budget', '=', $id) 
    ->get(); 

$budgetUpdate = []; 
$budgetUpdate[] = ['Referência', 'Descrição', 'Tamanho', 'Material', 'Quantidade', 'Val.Unitário', 'Val.Total']; 
foreach ($budget as $key) 
{ 
    if ($key->purchasePrice > 0) 
    { 
    $key->unit_price = $key->purchasePrice; 
    } 

    $budgetUpdated[] = $key->toArray(); 
} 
Excel::create('Proposta_'.$b->reference, function($excel) use($budgetUpdated) 
{ 
    // Set the title 
    $excel->setTitle('Proposta'); 

    $excel->sheet('Sheetname', function($sheet) use($budgetUpdated) 
    { 
    $sheet->fromArray($budgetUpdated, null, 'A1', false, true); 
    }); 

})->download('xls');} 

我該如何解決呢?

感謝的

+0

我沒有設定解除列的,我不想要的,但可能會使用Excel API的解決方案......但罰款未設置工程> ID -
$ USER_ID =驗證::用戶() 。 – user3242861

回答

1

爲了什麼它的價值我遇到了類似的問題,並沒有找到一個固定的條款,以便繼承人我的解決辦法了。
1.我在回調中查詢數據庫並獲取我需要的所有數據。
2.然後,我會遍歷集合並在每次迭代中創建一個新數組,併爲其分配一個值&頭。適用於挑選模型中的色譜柱

Excel::create('User List Export', function($excel) { 
     $excel->sheet('Users', function($sheet) { 
      $email = yourModelGoesHere::all(); 
      foreach ($email as $key => $value) { 
       $payload[] = array('email' => $value['email'], 'name' => $value['name']); 
      } 
      $sheet->fromArray($payload); 
     }); 
    })->download('xls'); 
0

您可以試試這種方法。

Excel::create('User', function($excel) use ($user_id){ 
    $excel->sheet('Sheet', function($sheet) use($user_id){ 

    $user = User::where('user_id', $user_id)->select('name', 'email', 'role', 'address')->get(); 
    }); 
})->export('xls'); 

return redirect('your route');