экспортировать Excel с динамическим массивом в Laravel, используя maatwebsite - PullRequest
1 голос
/ 03 октября 2019

Я бы хотел экспортировать Excel в Laravel версии 5.7. Я использую пакет Maatwebsite Laravel Excel версии 3.1. У меня есть массив информации о людях, подобной этой:

 $persons = {
        "person 1": [
            {
                "answer1": "shokouh"
            },
            {
                "answer2": "dareshiri"
            },
            {
                "answerN": "answer N"
            }
        ],
...
        "person M ": [
            {
                "answer1": "sarah"
            },
            {
                "answer2": "smith"
            },
            {
                "answerN": "answer N"
            }
        ]
    }

, и я хочу экспортировать ее в формате, указанном ниже:

Person 1    Answer 1    Answer 2    …   Answer N
Person M    Answer M2   Answer M2   …   Answer MN

Это моя функция экспорта в Controller:

public function export(Request $request, Tournament $tournament) {

    ... 

    $persons;

    return Excel::download(new ParticipantExport($persons), 'personInformation.xlsx');
}

Это мой участникExport в приложении \ Export \ memberExport:

class participantExport implements FromArray
{
    protected $invoices;

    public function __construct(array $invoices)
    {
        $this->invoices = $invoices;
    }

    public function array(): array
    {
        return $this->invoices;
    }
}

мне может помочь любое тело?

1 Ответ

1 голос
/ 05 октября 2019

Я решил вопрос следующим образом:

In Controller.php:

$rows = array();

        foreach ($persons as $slug => $person) {
            $row = array();
            array_push($row, $slug);
            foreach ($person as $key => $value) {

                array_push($row, $persons[$slug][$key]['answer']);

            }
            array_push($rows, $row);
        }

        $coll = new participantExport([$rows]);


        return Excel::download($coll, 'participant-information.xlsx');
...