Импортируйте лист Excel в Laravel и покажите извлеченные данные в пользовательском интерфейсе

Я использую Angular 4 во внешнем интерфейсе и Laravel 5.2 в своем бэкенде. Я хочу импортировать лист Excel из пользовательского интерфейса, сохранить значения в БД, получить значения и показать их в пользовательском интерфейсе с использованием Angular.

Для этого я использую пакет Maatwebsite/Excel в laravel. Мой лист Excel имеет следующую структуру.

имя | детали | цена
expertphp | Интернет-уроки | 100
привет | код | 200

Мой код laravel следующий: здесь myFile - это ключ, в качестве значения которого указан путь к файлу и имя.

    $File = $request->file('myFile');
    $path = $request->file('myFile')->getRealPath();
    $real_name = $File->getClientOriginalName();
    $data = Excel::load($path)->get();

    if($data->count()){
        foreach($data as $key => $value){
            $arr[] = ['name' => $value->name, 'details' => $value->details, 'price' => $value->price];
        }
    }

    return response()->success($data);

Я получаю ответ, как показано ниже:

     {
        "errors":false,
        "data":[
                {
                   "namedetailsprice":"expertphp\tOnline tutorials\t100"
                },
                {
                   "namedetailsprice":"hello\tfirst code\t2000"
                }
               ]
      }

Я не понимаю, почему заголовки становятся одним полем. Ценю любую помощь.

Благодарю.

1 ответ

Я думаю, что если вы измените свой код на этот код, он сработает или приблизит вас к вашему решению:

$File = $request->file('myFile');
$path = $request->file('myFile')->getRealPath();
$real_name = $File->getClientOriginalName();
$data = Excel::load($path)->get();
$returnData = [];

if($data->count()){
    foreach($data as $key => $value){
        $arr = ['name' => $value->name, 'details' => $value->details, 'price' => $value->price];
        array_push($returnData,$arr);
    }
}

return response()->success($returnData);

Если я вас правильно понял, вы бы хотели, чтобы этот новый $returnData возвращался вместо необработанного загруженного файла Excel. Еще одна причина, по которой я изменил ваш код, заключалась в том, что вы сохранили только одну строку ваших данных и заменили ее другой строкой в ​​том же массиве $arr. Теперь он каждый раз выдвигает новые строки и сохраняет все.

Другие вопросы по тегам