导入excel时未定义的索引错误

时间:2018-03-20 09:01:36

标签: laravel laravel-5 laravel-5.5 maatwebsite-excel

我正在尝试将我的excel导入我的数据库,但问题是该错误说“Undefined index:title”指的是控制器中的标题。 所以这是我的控制器代码

    public function importExcel()
{
    if(Input::hasFile('import_file')){
        $path = Input::file('import_file')->getRealPath();
        $data = Excel::load($path, function($reader){
        })->get();
        if(!empty($insert)){
            foreach ($data as $key => $value) {
                $insert[] = ['title' => $value->title, 'description' => $value->description];
            }
        if(!empty($insert)){
            DB::table('items')->insert($insert);
            print_r('Insert Record succesfully');
        }
        }
    }
    return back();
}

这是我的观点:

@extends('layouts.app')

@section('content')
<div class="container">
    <a href="{{ URL::to('downloadExcel/xls') }}"><button class="btn btn-success">Download Excel xls</button></a>
    <a href="{{ URL::to('downloadExcel/xlsx') }}"><button class="btn btn-success">Download Excel xlsx</button></a>
    <a href="{{ URL::to('downloadExcel/csv') }}"><button class="btn btn-success">Download CSV</button></a>
    <form style="border: 4px solid #a1a1a1;margin-top: 15px;padding: 10px;" action="{{ URL::to('importExcel') }}" class="form-horizontal" method="post" enctype="multipart/form-data">
        {{ csrf_field() }}
        <input type="file" name="import_file" />
        <button class="btn btn-primary">Import File</button>
    </form>
</div>
@endsection

以下是我要上传到我的数据库的excel图片。这是我要上传的xlsx。 release notes

但错误就像这样See picture for reference

1 个答案:

答案 0 :(得分:0)

您可以通过调用toArray的{​​{1}}方法直接插入工作表数据。

Maatwebsite\Excel\Readers\LaravelExcelReader

但是,根据您的实施情况,应该注意的是,当为阅读器指定回调时,$loadedFile = Excel::load($path); $inserts = $loadedFile->toArray(); if (!empty($insert)) { DB::table('items')->insert($insert); print_r('Inserted Record successfully'); } $reader->all()会返回$reader->get()Maatwebsite\Excel\Collections\RowCollection,具体取决于文件的页数。

对于只有一张纸的样本,您可以正确地期望Maatwebsite\Excel\Collections\SheetCollection。因此你有

Maatwebsite\Excel\Collections\RowCollection