【问题标题】:Laravel - Excel ImportLaravel - Excel 导入
【发布时间】:2019-03-10 21:29:28
【问题描述】:

我找到了这个网站的代码http://itsolutionstuff.com/post/laravel-56-import-export-to-excel-and-csv-exampleexample.html

这是我编辑后的路线:

Route::post('barang', 'BarangController@importExcel')->name('barang');

这是他们的控制器,我只是在 foreach 上添加:

public function importExcel(Request $request)
{
    $request->validate([
        'import_file' => 'required'
    ]);

    $path = $request->file('import_file')->getRealPath();
    $data = Excel::load($path)->get();

    if($data->count()){
        foreach ($data as $key => $value) {
            $arr[] = [
                'kode_barang' => $value->kode_barang, 
                'nama_barang' => $value->nama_barang, 
                'kategori_id' => $value->kategori_id, 
                'jumlah_barang' => $value->jumlah_barang, 
                'harga_satuan' => $value->harga_satuan, 
                'tanggal_inputan' => $value->tanggal_inputan, 
                'deskripsi' => $value->deskripsi, 
                'status' => $value->status,

            ];
        }

        if(!empty($arr)){
            Item::insert($arr);
        }
    }

    return back()->with('success', 'Insert Record successfully.');
}

我只是在我的视图上添加这个:

    <form action="{{ route('barang') }}" class="form-horizontal" method="post" 
     enctype="multipart/form-data">
            @csrf

            @if ($errors->any())
                <div class="alert alert-danger">
                    <a href="#" class="close" data-dismiss="alert" 
                        aria-label="close">×</a>
                    <ul>
                        @foreach ($errors->all() as $error)
                            <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                </div>
            @endif

            @if (Session::has('success'))
                <div class="alert alert-success">
                    <a href="#" class="close" data-dismiss="alert" 
                        aria-label="close">×</a>
                    <p>{{ Session::get('success') }}</p>
                </div>
            @endif
                <input type="file" name="import_file" />
                <button class="btn btn-primary">Import File</button>
        </form>

结果显示数据插入成功,但没有数据插入到我的表中。

这是我的 excel CSV 格式:

R4B6,MONITOR LENOVO,ELEKTRONIK,1,-,10/4/2018,-,Aktif

那么,如何使代码适合插入数据库?

【问题讨论】:

标签: php excel laravel


【解决方案1】:

首先请修改你的代码如下:

if($data->count()){
    foreach ($data as $key => $value) {
        $arr[] = [
            'kode_barang' => $value->kode_barang, 
            'nama_barang' => $value->nama_barang, 
            'kategori_id' => $value->kategori_id, 
            'jumlah_barang' => $value->jumlah_barang, 
            'harga_satuan' => $value->harga_satuan, 
            'tanggal_inputan' => $value->tanggal_inputan, 
            'deskripsi' => $value->deskripsi, 
            'status' => $value->status
        ];
    }
    if(!empty($arr)){
        Item::insert($arr);
        return back()->with('success', 'Insert Record successfully.');
    }else{
        return back()->with('error', 'Failed to insert record.');
    }
}

然后尝试调试您的代码为什么没有插入记录。

【讨论】:

    【解决方案2】:

    无需使用任何第三方库,您可以使用以下功能从您的表格中下载 Excel 文件。

    protected function downloadEXCEL(Request $request){
            $table = User::orderBy('created_at','desc')->get();
            $filename = "output.xls";
            $handle = fopen($filename, 'w+');
            fputcsv($handle,array('user_email','mobile','country','state','address','zip_code','city'));
            foreach($table as $row) {
                fputcsv($handle,array(
                    $row['user_email'],
                    $row['mobile'],
                    $row['country'],
                    $row['state'],
                    $row['address'],
                    $row['zip_code'],
                    $row['city']
                ));
            } 
    
            fclose($handle);
            $headers = array('Content-type'=> 'application/vnd.ms-excel');
            return response()->download($filename,'output.xls',$headers);
        }
    

    【讨论】:

    • 其实我不需要下载。我只需要成功插入导入代码
    猜你喜欢
    • 1970-01-01
    • 2018-05-20
    • 2019-12-29
    • 2015-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    相关资源
    最近更新 更多