2016-08-13 3 views
0

Ich benutze Laravel Excel von maatwebsite, aber ich habe ein Problem mit dem Export von Daten in XLS-Datei. Ich habe diese Abfrage, aber ich muss nicht alle Spalten in der XLS-Datei anzeigen, aber ich muss alle diese Spalten auswählen, um vor dem Download der Datei Operationen auszuführen. In meiner Auswahl habe ich 8 Spalten, aber in meinen Headern habe ich nur 7 zu zeigen, aber das funktioniert nicht, weil die 8ª Spalte auch erscheint.Laravel Excel - Wählen Sie Spalten zum Exportieren

meine Funktion:

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');} 

, wie ich das lösen kann?

Dankt

+0

ich die ungesetzt der Spalte habe, dass ich nicht wollen, aber vielleicht eine Lösung mit dem Excel-api ... aber mit unset funktioniert gut . – user3242861

Antwort

1

Für das, was ihr Wert Ich lief in ein ähnliches Problem und nur knapp sein Ziel viel in Bezug auf eine Fix so heren meine Lösung zu finden.
1. Ich frage die DB im Callback und bekomme alle Daten, die ich brauche.
2. Ich gehe dann über die Sammlung und erstellen Sie ein neues Array bei jeder Iteration und weisen Sie einen Wert & Header. Funktioniert hervorragend für Spalten von einem Modell Kommissionierung

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

Sie auf diese Weise versuchen.
$ user_id = Auth :: Benutzer() -> id

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'); 
Verwandte Themen