本文实例讲述了yii2.0框架实现上传excel文件后导入到数据库的方法。分享给大家供大家参考,具体如下:
Model模型
代码语言:javascript复制<?php
/**
* 描述...
* @author zcy
* @date 2019/8/13
*/
namespace appmodels;
use yiibaseModel;
use yiidbActiveRecord;
use yiiwebUploadedFile;
class uploadForm extends ActiveRecord
{
public $file;
public function rules()
{
return [
[['file'],'file', 'skipOnEmpty' = 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 '验证失败';
}
}
}
Views视图
代码语言:javascript复制<?php
use yiiwidgetsActiveForm;
$model = new appmodelsuploadForm();
$form = ActiveForm::begin([
'id' = 'upload',
'options' = ['enctype' = 'multipart/form-data'],
])
?
<?= $form- field($model,'file')- fileInput(['multiple'= 'multiple']) ?
<button 上传</button
<?php ActiveForm::end() ?
Controller控制器
代码语言:javascript复制<?php
/**
* 描述...
* @author zcy
* @date 2019/8/16
*/
namespace appcontrollers;
use appmodelsuploadForm;
use Yii;
use yiiwebController;
use yiiwebUploadedFile;
class UploadController extends Controller
{
/**
* 导入
* @author zcy
* @date 2019/8/16
*/
public function actionImport()
{
$model = new uploadForm();
if (Yii::$app- request- isPost) {
$model- file = UploadedFile::getInstance($model,'file');
// if ($model- upload()) {
// print <<<EOT
// <script alert('上传成功')</script
//EOT;
// } else {
// print <<<EOT
// <script alert('上传失败')</script
//EOT;
// }
if (!$model- upload()) {
print <<<EOT
<script alert('上传失败')</script
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 "<script alert('导入成功');window.history.back();</script ";
} else {
echo "<script alert('操作失败');window.history.back();</script ";
}
}
}
} else {
return $this- render('import',['model' = $model]);
}
}
}
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。