2017-03-02 3 views
1

Ich benutze Laravel Framework 5.2. Ich verwende Maatwebsite Excel Paket i und erfolgreich Import CSV-Format-Dateien, aber Problem erfolgreich installiert haben, ist: Angenommen, ich habe eine Tabelle und Spalten sind: -Wie überprüft man die CSV-Datei beim Hochladen in Laravel?

enter code here 
Tbale name:- employees_schedule 
columns are:- user_id, customer_name, date, 

Jetzt, als ich CSV-Format-Datei hochladen

enter code here 
then csv file colums are:- 
user_id,customer_name,date, hacking_column, time 

Jetzt, wenn ich csv-Datei mit drei Spalten (user_id, customer_name, date) hochzuladen ist es erfolgreich hochgeladen. Nun Punkt ist, wenn ich 2 weitere Spalten in csv hinzufügen muss ich die Fehlermeldung zeigen somnethinglike, dass „Ihre CSV-Dateien haben einige unerwünschte Spalten“

Kann jemand helpme hier ist meine Funktion

enter code here 
public function UploadSchedule(Request $request){ 
     if($request->isMethod('post')){ 
      $data = $request->all(); 
      //echo "<pre>"; print_r($data); die; 
      Excel::load(Input::file('schedule'),function($reader){ 
       $reader->each(function($sheet){ 
        EmployeeSchedule::firstOrCreate($sheet->toArray()); 
       }); 
      }); 
      return redirect()->back()->with('flash_message_success', 'Your Employee Schedule Uploaded successfully!'); 
     } 

und Blade-Datei :

enter code here 
<form id="addForm" role="form" class="form-horizontal" method="post" action="{{ url('admin/upload-employee-schedule') }}" enctype="multipart/form-data"> 
         <input type="hidden" name="_token" value="{{{ csrf_token() }}}" /> 
         <div class="form-body"> 
          <div class="form-group"> 
           <label class="col-md-3 control-label">Upload Schedule:</label> 
           <div class="col-md-5"> 
            <input type="file" id="csv" name="schedule"> 
           </div> 
          </div>       
         </div> 
         <div class="form-actions right1 text-center"> 
          <button id="check" class="btn green" type="submit">Submit</button> 
         </div> 
        </form> 

Antwort

0

Hier fand ich die Lösung meiner eigenen. Ich öffne einfach die Datei und bekomme die erste Kopfzeile. hier ist mein Auszug: -

public function UploadSchedule(Request $request){ 
if($request->isMethod('post')){ 
    $data = $request->all(); 
    $file = Input::file('schedule'); 
    $handle = fopen($file,"r"); 
    $header = fgetcsv($handle, 0, ','); 
    $countheader= count($header); 
    if($countheader<4 && in_array('user_id',$header) && in_array('customer_name',$header) && in_array('date',$header)){ 
     Excel::load($file ,function($reader){ 
      $reader->each(function($sheet){ 
       $sheet['date'] = date('Y-m-d',strtotime($sheet['date'])); 
       EmployeeSchedule::firstOrCreate($sheet->toArray()); 
      }); 
     }); 
    } else { 
     return redirect()->back()->with('flash_message_error', 'Your CSV files having unmatched Columns to our database...Your columns must be in this sequence <strong> user_id,customer_name,date </strong> only'); 
    } 
    return redirect()->back()->with('flash_message_success', 'Your Employee Schedule Uploaded successfully!'); 

}

Verwandte Themen