本文实例讲述了yii2.0框架实现上传excel文件后导入到数据库的方法。分享给大家供大家参考,具体如下:
Model模型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php /** * 描述... * @author zcy * @date 2019/8/13 */ namespace app\models; use yii\base\Model; use yii\db\ActiveRecord; use yii\web\UploadedFile; 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视图
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<?php use yii\widgets\ActiveForm; $model = new app\models\uploadForm(); $form = ActiveForm::begin([ 'id' => 'upload' , 'options' => [ 'enctype' => 'multipart/form-data' ], ]) ?> <?= $form ->field( $model , 'file' )->fileInput([ 'multiple' => 'multiple' ]) ?> <button>上传</button> <?php ActiveForm:: end () ?> |
Controller控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
<?php /** * 描述... * @author zcy * @date 2019/8/16 */ namespace app\controllers; use app\models\uploadForm; use Yii; use yii\web\Controller; use yii\web\UploadedFile; 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框架的PHP程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_42176520/article/details/99679468