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