yii2.0框架實(shí)現(xiàn)上傳excel文件后導(dǎo)入到數(shù)據(jù)庫的方法示例
本文實(shí)例講述了yii2.0框架實(shí)現(xiàn)上傳excel文件后導(dǎo)入到數(shù)據(jù)庫的方法。分享給大家供大家參考,具體如下:
Model模型
<?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 '驗(yàn)證失敗';
}
}
}
Views視圖
<?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控制器
<?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
{
/**
* 導(dǎo)入
* @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);//文件名自動(dòng)判斷類型
$excelReader = \PHPExcel_IOFactory::createReader($fileType);
$phpexcel = $excelReader->load($filename)->getSheet(0);//載入文件并獲取第一個(gè)sheet
$total_line = $phpexcel->getHighestRow();//總行數(shù)
$total_column = $phpexcel->getHighestColumn();//總列數(shù)
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('導(dǎo)入成功');window.history.back();</script>";
} else {
echo "<script>alert('操作失敗');window.history.back();</script>";
}
}
}
} else {
return $this->render('import',['model' => $model]);
}
}
}
更多關(guān)于Yii相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結(jié)》、《php優(yōu)秀開發(fā)框架總結(jié)》、《smarty模板入門基礎(chǔ)教程》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對(duì)大家基于Yii框架的PHP程序設(shè)計(jì)有所幫助。
相關(guān)文章
用php實(shí)現(xiàn)百度網(wǎng)盤圖片直鏈的代碼分享
華為網(wǎng)盤有個(gè)直鏈功能,不過需要錢買。我有百度網(wǎng)盤,不過百度的網(wǎng)盤外鏈不能在網(wǎng)頁里直接使用圖片 華為的直鏈功能可以做到。百度哪天也能有這功能就好了。2012-11-11
Laravel 實(shí)現(xiàn)數(shù)據(jù)軟刪除功能
這篇文章主要介紹了Laravel 實(shí)現(xiàn)數(shù)據(jù)軟刪除功能,文中給大家提到了軟刪除功能的實(shí)現(xiàn)方法,需要的朋友可以參考下2019-08-08
PHP網(wǎng)頁游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(三)
這篇文章主要介紹了PHP網(wǎng)頁游戲Xnova(ogame)源碼解讀的用戶注冊(cè)頁面,需要的朋友可以參考下2014-06-06
laravel中數(shù)據(jù)顯示方法(默認(rèn)值和下拉option默認(rèn)選中)
使用PHP+Redis實(shí)現(xiàn)延遲任務(wù),實(shí)現(xiàn)自動(dòng)取消訂單功能

