5

我在前端使用 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"
                }
               ]
      }

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

谢谢。

4

1 回答 1

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);

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

于 2019-01-10T11:17:58.023 回答