yii2.0 프레임워크에서 excel 파일을 업로드한 후 데이터베이스로 가져오는 방법 예시

4611 단어
본고는 ii2.0 프레임워크가 excel 파일을 업로드한 후 데이터베이스로 가져오는 방법을 실례로 설명한다.다음과 같이 여러분에게 참고할 수 있도록 공유합니다.
모델 모델

 false,'extensions' => 'xls,xlsx'],
    ];
  }

  public function attributeLabels()
  {
    return [
      'file'=> ' '
    ];
  }

  public function upload()
  {
    $file = UploadedFile::getInstance($this, 'file');

    if ($this->rules()) {
      $tmp_file = $file->baseName . '.' . $file->extension;
      $path = 'upload/' . 'Files/';
      if (is_dir($path)) {
        $file->saveAs($path . $tmp_file);
      } else {
        mkdir($path, 0777, true);
      }
      $file->saveAs($path . $tmp_file);
      return true;
    } else {
      return ' ';
    }
  }

}


뷰 뷰

 'upload',
  'options' => ['enctype' => 'multipart/form-data'],
])
?>

= $form->field($model,'file')->fileInput(['multiple'=>'multiple']) ?>

  



Controller 컨트롤러

request->isPost) {
      $model->file = UploadedFile::getInstance($model,'file');
//      if ($model->upload()) {
//        print <<alert(' ')
//EOT;
//      } else {
//        print <<alert(' ')
//EOT;
//      }
      if (!$model->upload()) {
        print <<alert(' ')
EOT;
      }
    }

    $ok = 0;
    if ($model->load(Yii::$app->request->post())) {
      $file = UploadedFile::getInstance($model,'file');

      if ($file) {
        $filename = 'upload/Files/' . $file->name;
        $file->saveAs($filename);

        if (in_array($file->extension,array('xls','xlsx'))) {
          $fileType = \PHPExcel_IOFactory::identify($filename);// 
          $excelReader = \PHPExcel_IOFactory::createReader($fileType);

          $phpexcel = $excelReader->load($filename)->getSheet(0);// sheet
          $total_line = $phpexcel->getHighestRow();// 
          $total_column = $phpexcel->getHighestColumn();// 

          if (1 < $total_line) {
            for ($row = 2;$row <= $total_line;$row++) {
              $data = [];
              for ($column = 'A';$column <= $total_column;$column++) {
                $data[] = trim($phpexcel->getCell($column.$row));
              }

              $info = Yii::$app->db->createCommand()
->insert('{{%shop_info}}',['shop_name' => $data[0],'shop_type' => $data[1]])
->execute();

              if ($info) {
                $ok = 1;
              }
            }
          }

          if ($ok == 1) {
            echo "alert(' ');window.history.back();";
          } else {
            echo "alert(' ');window.history.back();";
          }
        }
      }
    } else {
      return $this->render('import',['model' => $model]);
    }
  }
}


더 많은 Yii와 관련된 내용에 흥미를 가진 독자들은 본 사이트의 주제를 볼 수 있습니다:,,, 및 php 흔한 데이터베이스 조작 입문 교과
본고에서 기술한 바와 같이 Yii 프레임워크를 바탕으로 하는 PHP 프로그램 설계에 도움이 되기를 바랍니다.

좋은 웹페이지 즐겨찾기