2016-09-27 3 views
0

phpexcel을 사용하여 대량으로 엑셀을 통해 학생 기록을 보내고 있습니다. json 형식의 API에 게시하고 싶습니다. 출력은 아래에 있지만 API가 저장되는 아래의 형식이 필요합니다. 데이터베이스의 각 데이터. 내 컨트롤러 :웹 api에 phpexcel 삽입 사용하기

$import = new ImportExcel(); 
    if ($import->load(Yii::$app->request->post())) { 
     //upload path global parameters 
     Yii::$app->params['uploadPath'] = Yii::$app->basePath . '/web/upload/excel/'; 
     $file = UploadedFile::getInstance($import, 'import'); 
     $path = Yii::$app->params['uploadPath'] . $file; 
     $file->saveAs($path); 
     // Include PHPExcel_IOFactory 
     try { 
      $inputFileType = PHPExcel_IOFactory::identify($path); 
      $objReader = PHPExcel_IOFactory::createReader($inputFileType); 
      $objPHPExcel = $objReader->load($path); 
     } catch (Exception $e) { 
      die('Error loading file "' . pathinfo($path, PATHINFO_BASENAME) . '": ' . $e->getMessage()); 
     } 
     // Get worksheet dimensions 
     $sheet = $objPHPExcel->getSheet(0); 
     $highestRow = $sheet->getHighestRow(); 
     $highestColumn = $sheet->getHighestColumn(); 
     $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); 
     $worksheet = $objPHPExcel->setActiveSheetIndexbyName('Sheet1'); 
     $worksheetTitle  = $worksheet->getTitle(); 
     // Loop through each row of the worksheet in turn 
     for ($row = 1; $row <= $highestRow; $row++) { 
      // Read a row of data into an array 
      $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, 
       NULL, 
       TRUE, 
       FALSE); 

      var_dump(json_encode($rowData)); 


     } 
    } 

출력 :

string(70) "[["name","address","class","section","guardian","contact us","email"]]" string(107) "[["sugam pradhan","rambazar,pokhara-10",10,"A","jayandra kumar rajbhandari",61431910,"[email protected]"]]" string(105) "[["Bill gurung","rambazar,pokhara-10",10,"A","jayandra kumar rajbhandari",61431910,"[email protected]"]]" string(107) "[["Bimal poudelq","rambazar,pokhara-10",10,"A","jayandra kumar rajbhandari",61431910,"[email protected]"]]" string(101) "[["Dam sir","rambazar,pokhara-10",10,"A","jayandra kumar rajbhandari",61431910,"[email protected]"]]" 

난에 게시 할 :

[{'school_id':3,'name':'name1','image':'image1','guardian_name':'guardian_name1','address':'address1','contact_no':'111','email':'[email protected]','blood_grp':'A','d_o_b':'2001-01-01','class_id':1,'section_id':2,'roll_no':'1','enrolled_date':'2010-01-01','is_active':0}, 

답변

1

당신은 지금까지 내가 이해되는 키로서 첫 번째 행을 매핑해야합니다.

 $row = 1; $result = []; 
     $keys = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, 
       NULL, 
       TRUE, 
       FALSE); 
     // Loop through each row of the worksheet in turn 
     for ($row = 2; $row <= $highestRow; $row++) { 
      // Read a row of data into an array 
      $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, 
       NULL, 
       TRUE, 
       FALSE); 

      $result[] = array_combine($keys,$rowData); 

     } 
     var_dump($result); 

이렇게하면 첫 번째 행이 배열의 키인 경우 필요한 것을 얻을 수 있습니다.