在Yii2中导入Excel

我有yii2应用程序使用高级模板和数据库mySql,我已经做了导入excel文件的function之一的表,我做了一个名为学生的控制器中包含学生数据CRUD的function。这是我的代码

public function actionImportExcel() { $inputFile = 'uploads/siswa_file.xlsx'; try{ $inputFileType = \PHPExcel_IOFactory::identify($inputFile); $objReader = \PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $objReader->load($inputFile); } catch (Exception $e) { die('Error'); } $sheet = $objPHPExcel->getSheet(0); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); for($row=1; $row <= $highestRow; $row++) { $rowData = $sheet->rangeToArray('A'.$row.':'.$highestColumn.$row,NULL,TRUE,FALSE); if($row==1) { continue; } $siswa = new Siswa(); $siswa->nis = $rowData[0][0]; $siswa->nama_siswa = $rowData[0][1]; $siswa->jenis_kelamin = $rowData[0][2]; $siswa->ttl = $rowData[0][3]; $siswa->alamat = $rowData[0][4]; $siswa->telp = $rowData[0][5]; $siswa->agama = $rowData[0][6]; $siswa->nama_ortu = $rowData[0][7]; $siswa->telp_ortu = $rowData[0][8]; $siswa->pekerjaan_ortu = $rowData[0][9]; $siswa->tahun_masuk = $rowData[0][10]; $siswa->kelas = $rowData[0][11]; $siswa->save(); print_r($siswa->getErrors()); } die('okay'); } 

但我不知道如何使视图中的button,使这个function的工作。 我的意思是我想做一个button,当用户点击button,浏览他们的Excel文件,他们可以导入该文件和Excel中的数据可以导入到数据库

首先你应该上传文件

然后用你的function进行处理

有几个部分的代码,你必须生产..

例如用户上传文件的视图

查看:@ app / views / site / upload.php

 <?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]) ?> <?= $form->errorSummary($model); ?> <?= $form->field($model, 'imageFile')->fileInput() ?> <button>Submit</button> <?php ActiveForm::end() ?> 

控制器:@ app / controllers / SiteController.php

 namespace app\controllers; use Yii; use yii\web\Controller; use app\models\UploadForm; use yii\web\UploadedFile; class SiteController extends Controller { public function actionUpload() { $model = new UploadForm(); if (Yii::$app->request->isPost) { $model->imageFile = UploadedFile::getInstance($model, 'imageFile'); if ($model->upload()) { // file is uploaded successfully return; } } return $this->render('upload', ['model' => $model]); } } 

模型:@ app / models / UploadForm.php

 namespace app\models; use yii\base\Model; use yii\web\UploadedFile; class UploadForm extends Model { /** * @var UploadedFile */ public $imageFile; public function rules() { return [ [['imageFile'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg'], ]; } public function upload() { if ($this->validate()) { $this->imageFile->saveAs('uploads/' . $this->imageFile->baseName . '.' . $this->imageFile->extension); return true; } else { return false; } } } 

代码是从这个文档