在Laravel中导入Excel工作表并在UI中显示提取的数据

Ana*_*ary 5 laravel csvtoarray angular

我在我的前端使用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);
Run Code Online (Sandbox Code Playgroud)

我收到如下响应:

     {
        "errors":false,
        "data":[
                {
                   "namedetailsprice":"expertphp\tOnline tutorials\t100"
                },
                {
                   "namedetailsprice":"hello\tfirst code\t2000"
                }
               ]
      }
Run Code Online (Sandbox Code Playgroud)

我不明白为什么标题会成为一个字段.感谢任何帮助.

谢谢.

小智 0

我认为如果您将代码更改为以下代码,它将起作用,或者它会让您更接近您的解决方案:

$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);
Run Code Online (Sandbox Code Playgroud)

如果我理解正确的话,那么您会希望返回这个新的 $returnData 而不是原始加载的 Excel 文件。我更改代码的另一个原因是您仅保存一行数据并将其替换为同一数组 $arr 中的另一行。现在它每次都会推送新行并保存所有行。