Импортируйте лист Excel в Laravel и покажите извлеченные данные в пользовательском интерфейсе - PullRequest
0 голосов
/ 10 января 2019

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

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

Image Link

имя | детали | цена
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 Ответ

0 голосов
/ 10 января 2019

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

$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. Теперь он каждый раз выдвигает новые строки и сохраняет все.

...