Laravel Excel , exportation à partir d'un modèle, le style de questions
Je suis en train d'exporter des données à partir de mon modèle excel scheet avec "Laravel excel", je l'ai fait, mais mon résultat est loin de ce que j'ai vraiment besoin d'
Qu'est ce que j'ai dans le fichier téléchargé:
Et c'est ce que je veux vraiment accomplir:
Mon contrôleur partie:
//casting export...
Excel::create('ExcelExport', function($excel) use($filters, $agents) {
$main_arr = array();
foreach($agents as $value){
$main_arr[] = Card::cardForUser($value, $filters)->toArray();
}
$excel->sheet('Sheetshit', function($sheet) use($main_arr) {
//You may ask me "why are you using foreach?"
//and my answer will be:"I don`t KNOW, because it WORKS!"
foreach($main_arr as $one){
$sheet->fromArray($one);
}
});
})->export('xls');
Modèle partie:
public static function cardForUser($user_id, $filters = array()){
$query = static::UserId($user_id);//just gets 'where user id'
foreach($filters['fields'] as $select){
$query->addSelect($select);
}
return $query->get();
}
public function scopeUserId($query, $user_id) {
return $query->where('user_id', '=', $user_id);
}
$filters
tableau composé des noms des champs de DB, donc, essentiellement, il décide de colonnes à inclure dans l'exportation. Cela signifie que mon $main_arr
peut avoir la longueur de l'intérieur de champs de 1 à 5. Chaque agent peut avoir beaucoup de lignes en DB ou aucun
Exemple de $main_arr dump avec 4 filtres de jeu:
array (size=8)
0 =>
array (size=10)
//thats will be first agent
0 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chrysler' (length=8)
'ts_model' => string 'PT CRUISER' (length=10)
1 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Opel' (length=4)
'ts_model' => string 'Corsa' (length=5)
2 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Dodge' (length=5)
'ts_model' => string 'Stratus' (length=7)
3 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Р’РђР—' (length=6)
'ts_model' => string '2112' (length=4)
4 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Mercedes-Benz' (length=13)
'ts_model' => string 'E 270' (length=5)
5 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Р’РђР—' (length=6)
'ts_model' => string '21140 LADA SAMARA' (length=17)
6 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'LADA' (length=4)
'ts_model' => string '213100 LADA 4С…4' (length=16)
7 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Р’РђР—' (length=6)
'ts_model' => string '21110' (length=5)
8 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chevrolet' (length=9)
'ts_model' => string 'Lanos' (length=5)
9 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'VOLKSWAGEN' (length=10)
'ts_model' => string 'PASSAT' (length=6)
//thats will be second agent
1 =>
array (size=10)
0 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Mercedes' (length=8)
'ts_model' => string 'Benz' (length=4)
1 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chevrolet' (length=9)
'ts_model' => string 'Corvette' (length=8)
2 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chevrolet' (length=9)
'ts_model' => string 'Corvette' (length=8)
3 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chevrolet' (length=9)
'ts_model' => string 'Corvette' (length=8)
4 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chevrolet' (length=9)
'ts_model' => string 'Corvette' (length=8)
5 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Chevrolet' (length=9)
'ts_model' => string 'Corvette' (length=8)
6 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Mazeratti' (length=9)
'ts_model' => string 'M4' (length=2)
7 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Ferrari' (length=7)
'ts_model' => string 'F4' (length=2)
8 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Mazda' (length=5)
'ts_model' => string '5' (length=1)
9 =>
array (size=4)
'date_start' => string '06.08.2014 10:00:00' (length=19)
'ts_category' => int 2
'ts_make' => string 'Test' (length=4)
'ts_model' => string 'Test' (length=4)
etc...
Sooo... mes questions sont les:
- Comment puis-je régler titre principal ("en-Tête de trucs" dans l'exemple img)?
- pourquoi dois-je ma les en-têtes de colonnes(date_start, ts_category,ts_make,ts_model) disparaissent en premier élément du tableau? (Vous pouvez le voir à la première img que je n'ai pas de "date de début" et "ts_category" en-têtes pour le premier sous-tableau. BTW, parfois, je n'ai pas les en-têtes à tous pour le premier sous-tableau!)
- Puis-je faire de mes sous-tableau d'en-têtes de gras(ts_make, etc)? Comment?
- Comment puis-je rendre les sous-titres pour chaque agent I planification de l'utilisation de sous-clé du tableau à afficher un certain nombre d'agent)?
Mise à JOUR Posté code de travail comme réponse.
OriginalL'auteur Zanshin13 | 2014-09-23
Vous devez vous connecter pour publier un commentaire.
Je ne vais pas répondre à toutes vos questions, parce que vous aurez besoin de regarder la documentation sur votre propre. Cependant, je vais vous montrer comment obtenir un tel effet:
et je pense que ça va vous aider plus que d'expliquer ce que vous avez eu tort de
Le code ci-dessus le fichier excel ci-dessous:
OriginalL'auteur Marcin Nabiałek
Oeil à la documentation, c'est très simple:
Compter ce que les lignes doivent être en caractères gras:
D'une façon similaire à ci-dessus 🙂
Hey, Comment puis-je lire ce type de fichier Excel à l'aide de Laravel-Excel Mattwebsite?
Qu'entendez-vous par "lecture", exactement? Vous pouvez l'ouvrir avec n'importe quel type Excel logiciel(OpenOffice, LibreOffice, etc). Si vous voulez dire "lire" à l'aide de code, vous pouvez utiliser la fonction de
Excel::load('file.xls', function($reader) { // reader methods });
ou de tout autrephp
fichier fonction. Vous pouvez en lire plus ici maatwebsite.nl/laravel-excel/docs/importOriginalL'auteur Wojciech Mleczek
Avec l'aide de Marcin et r4xz je suis arrivé à ce code de travail:
OriginalL'auteur Zanshin13
Je vous recommande de créer un fichier excel avec le style que vous voulez, puis fixez vos données de ce fichier de modèle, suivez cet exemple:
l'idée est de faire et de tableau et puis fixer à l'aide de la méthode setCellValueByColumnAndRow
OriginalL'auteur David Tataje