未定义的索引:说明 - 上载Excel文件

时间:2017-12-10 21:29:57

标签: laravel maatwebsite-excel

有什么方法可以阻止读者在任何行数据不同时读取excel文件?当我上传excel文件时,我得到Undefined index: description,这意味着在上传的文件中找不到description

有没有办法可以处理这个错误?

if ($request->file('imported-file')) {
  $path = $request->file('imported-file')->getRealPath();

  $data = Excel::load($path, function($reader) {
     $reader->calculate(false);
  })->get();

  if (($request->file('imported-file')->getClientOriginalExtension()) != 'xlsx') {
    return redirect('')->with('error','File Format may not be supported');
  } else {

    if (!empty($data) && $data->count()) {
      foreach ($data->toArray() as $row) {
          if (!empty($row)) {
            $dataArray[] = [
              'name' => $row['name'],
              'description' => $row['description'],
            ];
          } 
      }

      if (!empty($dataArray)) {
         Item::insert($dataArray);

         return redirect('')->with('status','successfully added');  
      }
    }

  }
}

2 个答案:

答案 0 :(得分:1)

而不是:

'description' => $row['description'],

你可以使用

'description' => array_get($row, 'description'),

答案 1 :(得分:0)

我也面临着同样的问题,这是我的解决方案,希望它能对某人有所帮助。

注意:这是针对Laravel 6.0,Importer类必须实现ToModel,WithHeadingRow这两个接口,

return new Holiday([
'name'          => Arr::get($row,'name'),
'start_date'    => Arr::get($row,'start_date'),
'end_date'      => Arr::get($row,'end_date'),
]);