2016-09-27 81 views
0

我正在使用phpexcel通过excel发送学生记录批量,我想发布到api中的json format.my输出低于,但我想在下面的格式,从api可以保存数据库中的每个数据。 我的控制器:使用phpexcel插入web api

$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); 

这样,如果第一行是数组的键,那么您将获得所需的内容。