Excel 파일을 읽고 데이터베이스 Larabel 5에 업로드하는 중
저는 엑셀 파일을 업로드하고 내용을 읽고 데이터베이스에 정보를 업로드할 수 있는 프로젝트를 가지고 있습니다.그래서 나는 마트웹사이트/라벨엑셀을 돕기 위해 도서관을 이용하기로 결정했다.
하지만 http://www.maatwebsite.nl/laravel-excel/docs/import 문서를 읽어보려고 했지만 필요한 문서를 찾을 수 없었습니다.
예를 들어 첫 번째 줄의 Excel 파일에서John,Kennedy,Male내 데이터베이스에 있는 코렌스폰드는First Name,Last Name,Gender어떻게 읽고 업로드 할 수 있나요?누가 나 좀 도와줄래?
감사합니다!
현시점
public function postUploadCsv()
{
$rules = array(
'file' => 'required',
'num_records' => 'required',
);
$validator = Validator::make(Input::all(), $rules);
// process the form
if ($validator->fails())
{
return Redirect::to('customer-upload')->withErrors($validator);
}
else
{
$file = Input::file('file');
dd($file);
exit();
}
}
Excel 시트 열 이름이 데이터베이스 열 이름과 정확히 일치할 경우 다음과 같이 충분합니다.
위의 컨트롤러 클래스 추가,
use Maatwebsite\Excel\Facades\Excel;
use Illuminate\Support\Facades\Input;
기능 코드,
public function postUploadCsv()
{
$rules = array(
'file' => 'required',
'num_records' => 'required',
);
$validator = Validator::make(Input::all(), $rules);
// process the form
if ($validator->fails())
{
return Redirect::to('customer-upload')->withErrors($validator);
}
else
{
try {
Excel::load(Input::file('file'), function ($reader) {
foreach ($reader->toArray() as $row) {
User::firstOrCreate($row);
}
});
\Session::flash('success', 'Users uploaded successfully.');
return redirect(route('users.index'));
} catch (\Exception $e) {
\Session::flash('error', $e->getMessage());
return redirect(route('users.index'));
}
}
}
갱신하다
워크북에 두 장 이상의 시트가 있다고 가정하면 추가 시트가 있습니다.foreach시트 위에서 아래처럼 반복한다.
Excel::load(Input::file('file'), function ($reader) {
$reader->each(function($sheet) {
foreach ($sheet->toArray() as $row) {
User::firstOrCreate($row);
}
});
});
Larabel 5.3을 사용하고 있으며 Excel 시트 열이 정확하지 않은 경우
필요에 따라 다음 코드를 사용하십시오.
/**
* Import file into database Code
*
* @var array
*/
public function importExcel(Request $request)
{
if($request->hasFile('import_file')){
$path = $request->file('import_file')->getRealPath();
$data = Excel::load($path, function($reader) {})->get();
if(!empty($data) && $data->count()){
foreach ($data->toArray() as $key => $value) {
if(!empty($value)){
foreach ($value as $v) {
$insert[] = ['title' => $v['title'], 'description' => $v['description']];
}
}
}
if(!empty($insert)){
Item::insert($insert);
return back()->with('success','Insert Record successfully.');
}
}
}
return back()->with('error','Please Check your file, Something is wrong there.');
}
자세한 튜토리얼은 이쪽에서 확인하세요.
기본적으로 Excel 시트에서 데이터가 추출되면 모든 열 이름이 소문자로 변환되고 이름 사이의 모든 공백이 밑줄로 바뀝니다.
저는 엑셀 파일을 업로드하고 내용을 읽고 데이터베이스에 정보를 업로드할 수 있는 프로젝트를 가지고 있습니다.그래서 나는 도서관을 이용하기로 했다.
<?php
namespace App\Imports;
use App\Models\aas;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToCollection;
class Lecture implements ToCollection
{
/**
* @param Collection $collection
*/
public function collection(Collection $collection)
{
$t=count($collection[0]);
foreach ($collection as $row)
{
for ($i=0; $i < $t; $i++) {
if ($i==0) {
$ver=mb_strstr( $row[$i], '2021' );
if($ver==FALSE) break;
}
if (!empty($row[$i])) {
switch ($collection[0][$i]) {
case 'Ag':
aas::create([
'ref' => $row[0],
'lect' => $row[$i],
'code' => 9,
]);
break;
case 'Cu':
aas::create([
'ref' => $row[0],
'lect' => $row[$i],
'code' => 9,
]);
break;
case 'Pb':
aas::create([
'ref' =>$row[0],
'lect' =>$row[$i],
'code' => 10,
]);
break;
case 'Zn':
aas::create([
'ref' =>$row[0],
'lect' =>$row[$i],
'code' => 11,
]);
break;
case 'Mn':
aas::create([
'reference_labo' =>$row[0],
'lecture' =>$row[$i],
'code' => 12,
]);
break;
case 'Co':
aas::create([
'ref' =>$row[0],
'lect' =>$row[$i],
'code' => 13,
]);
break;
case 'Ni':
aas::create([
'ref' =>$row[0],
'lect' =>$row[$i],
'code' => 14,
]);
break;
case 'Fe':
aas::create([
'ref' =>$row[0],
'lect' =>$row[$i],
'code' => 15,
]);
break;
}
}
}
}
}
}
내 기능은 잘 실행되지만 데이터가 데이터베이스에 등록되지 않음
언급URL : https://stackoverflow.com/questions/31377783/reading-excel-file-and-uploading-to-database-laravel-5
'programing' 카테고리의 다른 글
| 부울 리스트에서 True 값의 인덱스 가져오기 (0) | 2023.04.19 |
|---|---|
| 도커 - 캐시 키 계산 실패: 찾을 수 없음 - Visual Studio에서 정상적으로 실행됨 (0) | 2023.04.19 |
| 언로드로 사용자 폼을 닫지 않음 (0) | 2023.04.19 |
| XAML 에서 범용 타입을 지정할 수 있습니까(전).NET 4 프레임워크)? (0) | 2023.04.19 |
| 파일 이름의 일부 이름 바꾸기 (0) | 2023.04.19 |