php上传xlsx文件并导入到数据库,yii2.0框架实现上传excel文件后导入到数据库的方法示例...

本文实例讲述了yii2.0框架实现上传excel文件后导入到数据库的方法。分享给大家供大家参考,具体如下:

Model模型

/**

* 描述...

* @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视图

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']) ?>

上传

Controller控制器

/**

* 描述...

* @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;

// } else {

// print <<

//

//EOT;

// }

if (!$model->upload()) {

print <<

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 "";

} else {

echo "";

}

}

}

} else {

return $this->render('import',['model' => $model]);

}

}

}

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值