Я пытаюсь прочитать файл .csv / .xlsx, используя Laravel Excel, так же, как вы делали бы это с пандами библиотеки Python, с помощью функции read_csv (), но вместо сохранения содержимого файла в DataFrame. Я хочу их в коллекции. Так что в значительной степени идентифицируйте первую строку как заголовок и назовите ключи других строк на основе имен заголовков.
В настоящее время я могу сохранить каждую строку в коллекцию с помощью этого файла импорта и запустив команду:
$collection = \Excel::toCollection(new TestImport, file);
<?php
namespace App\Imports;
use App\User;
use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;
class TestImport implements ToCollection
{
public function collection(Collection $row)
{
return $row;
}
}
Но при этом ключи (заголовок) просто сохраняются как другой элемент коллекции (строка). До сих пор я был в состоянии найти два возможных решения, которые не идеальны:
1) Считайте файл fist только для того, чтобы получить заголовки, а затем передайте их в качестве аргумента конструктору класса импорта. и определите имя ключа вручную.
2) После прочтения файла переберите коллекцию с именами всех ключей элементов.
Кто-нибудь знает лучший и более простой способ сделать это?