yii2框架的导入excel到数据库功能
时间: 2023-06-15 13:05:51 浏览: 194
导入excel到数据库
Yii2框架有一个扩展Yii2Excel,可以方便地实现导入Excel到数据库的功能。以下是实现步骤:
1. 安装Yii2Excel扩展
可以使用Composer来安装:
```
composer require kartik-v/yii2-widget-fileinput "@dev"
composer require phpoffice/phpspreadsheet
```
2. 配置Yii2Excel扩展
在应用的配置文件(通常是config/web.php或config/console.php)中增加以下配置:
```
'components' => [
// ...
'excel' => [
'class' => 'yii2tech\spreadsheet\Spreadsheet',
],
// ...
],
```
3. 创建上传表单
使用Yii2框架的ActiveForm来创建一个上传表单,例如:
```
<?php $form = ActiveForm::begin([
'options' => ['enctype' => 'multipart/form-data']
]) ?>
<?= $form->field($model, 'file')->widget(FileInput::classname(), [
'options' => ['accept' => 'application/vnd.ms-excel'],
]) ?>
<button>提交</button>
<?php ActiveForm::end() ?>
```
其中,$model是上传表单的模型,file是上传文件的属性。
4. 创建控制器
在控制器中添加以下代码来处理上传文件:
```
public function actionImport()
{
$model = new YourModel();
if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstance($model, 'file');
if ($model->file && $model->validate()) {
$reader = Yii::$app->excel->load($model->file->tempName);
$rows = $reader->readAll();
foreach ($rows as $row) {
$yourModel = new YourModel();
$yourModel->attribute1 = $row[0];
$yourModel->attribute2 = $row[1];
// ...
$yourModel->save();
}
Yii::$app->getSession()->setFlash('success', '导入成功!');
}
}
return $this->render('import', [
'model' => $model,
]);
}
```
其中,YourModel是你要导入数据的模型,attribute1、attribute2是该模型的属性。
5. 创建视图文件
在视图文件中使用第3步中创建的表单:
```
<?= $this->render('_form', [
'model' => $model,
]) ?>
```
6. 运行程序
现在,你可以运行程序并上传Excel文件,如果一切顺利,你的数据就会被导入到数据库中。
阅读全文