我在我的前端使用Angular 4,在后端使用Laravel 5.2.我想从UI导入Excel工作表,将值存储在DB中,检索值并使用Angular在UI中显示它们.
我在laravel中使用Maatwebsite / Excel包.我的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" } ] }
我不明白为什么标题会成为一个字段.
感谢任何帮助.
谢谢.
解决方法
我认为,如果您将代码更改为此代码,它将起作用,或者它会让您更接近您的解决方案:
$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,'price' => $value->price]; array_push($returnData,$arr); } } return response()->success($returnData);
如果我理解正确,那么你会希望返回这个新的$returnData而不是原始加载的excel文件.我更改代码的另一个原因是您只保存了一行数据并将其替换为同一数组$arr中的另一行.现在它每次都在推新行并保存所有行.