Проблемы со стилем Laravel Excel - PullRequest
0 голосов
/ 20 апреля 2020

У меня небольшая проблема при использовании Laravel Excel. Я пытался разместить границы на своем листе, но они не отображаются. Я не вижу, где мне нужно редактировать свой код. Может ли кто-нибудь помочь мне найти мою ошибку? Я даю вам мой код ниже:

ExportExcelController. php

<?php

namespace App\Http\Controllers;

use App\Event;
use App\Exports\ReservationExport;
use App\Reservation;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Events\AfterSheet;
use Maatwebsite\Excel\Events\BeforeExport;
use Maatwebsite\Excel\Facades\Excel;
use Maatwebsite\Excel\Sheet;
use PhpOffice\PhpSpreadsheet\Spreadsheet;

class ExportExcelController extends Controller
{
    function index()
    {
        $donneesRes = Reservation::all();
        //DB::table('reservations')->join('events', 'event_id', '=', 'events.id')->get();
        return view('listeHoraires')->with('donneesRes', $donneesRes);
    }

    /*public function show(){
        $reservation = new Reservation();
        $event = $reservation->event();
        $horaire = $reservation->horaire();
        $local = $reservation->local();
    }*/

    function excel()
    {
        $sheet = new Spreadsheet();
        $donneesRes = DB::table('reservations')->get()->toArray();
        /*$donneesTab[] = array('N° semaine', 'Date', 'Heure de début', 'Heure de fin', 'Cours', 'Horaire', 'Local');
        $styleArray = [
            'B2:G8',
            [
                'borders' => [
                    'outline' => [
                        'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
                        'color' => ['argb' => 'FFFF0000'],
                    ],
                ]
            ]
        ];
        $sheet->getStyle('B2:G8')->applyFromArray($styleArray);*/
        foreach($donneesRes as $donnee)
        {
            $donneesTab[] = array(
                'N° semaine'  => $donnee->numero_semaine,
                'Date'   => $donnee->date,
                'Heure de début' => $donnee->heure_debut,
                'Heure de fin' => $donnee->heure_fin,
                'Cours'    => $donnee->Event_id,
                'Horaire' => $donnee->horaire_id,
                'Local'   => $donnee->local_id
            );
        }
        $export = new ReservationExport();
        return Excel::download($export, "horaire.xlsx");
    }
}

ReservationExport. php

<?php

namespace App\Exports;

use App\Reservation;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\ShouldAutoSize;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Events\AfterSheet;

class ReservationExport implements FromCollection, WithHeadings, ShouldAutoSize
{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        return Reservation::all();
    }
    public function headings(): array
    {
        return [
            'N° semaine',
            'Date',
            'Heure de début',
            'Heure de fin',
            'Cours',
            'Horaire',
            'Local'
        ];
    }
    public function registerEvents(): array
    {
        return [
                AfterSheet::class    => function(AfterSheet $event) {
                $cellRange = 'A1:I3';
                $event->sheet->getDelegate()->getStyle($cellRange)->getFont()->setSize(14);
            },
        ];
    }
}

Спасибо за ваши ответы.

1 Ответ

0 голосов
/ 20 апреля 2020

Вы можете установить границы для ячейки:

// Set border for range
$sheet->setBorder('A1:F10', 'thin');

Здесь вы можете найти другие варианты границ:

Или вы также можете попробовать решение ниже, если указано выше. не работает:

$event->sheet->getStyle('C8:W25')->applyFromArray([
                    'borders' => [
                        'allBorders' => [
                            'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
                            'color' => ['argb' => '000000'],
                        ],
                    ],
         ]);
  • allBorders
  • по горизонтали
  • внутри
  • контур
  • по вертикали
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...