YII中整合PHPEXCEL进行数据导入MYSQL数据库

     上一篇写到了数据导出EXCEL,同样的有时候需要进行EXCEL数据导入数据库,此处同样适用的是PHPEXCEL包,具体的方法如下:

/**
 * @todo import excel to mysql
 * @param $filepath 存储路径
 * @param $file 原始的文件名
 * @param $filetemp 文件临时存储路径
 * @param $sqls insert语句部分 
 * @return boolean false/true
 * @see 例子:
 *  if (isset($_POST['submit'])){
		$files=$_FILES['excelfile'];
		$file=$files['name'];
		$filetemp=$files['tmp_name'];
		$filepath='upload/';
		$sql='INSERT INTO user (`userid`, `username`, `userage`) VALUES (';
		$importExcel = $this-> importExcel($filepath, $file, $filetemp, $sql);
		if ($importExcel==TRUE){
			echo 'true';
		}else{
			echo 'false';
		}
	}
 */
public function importExcel($filepath,$file,$filetemp,$sqls){
	//PHPEXCEL包路径
	$phpExcelPath=Yii::app() -> request -> baseUrl.'/protected/extensions/phpexcel/';
	spl_autoload_unregister(array('YiiBase','autoload'));//取消YII自动加载
	include($phpExcelPath  . 'PHPExcel.php');//引入PHPEXCEL类
	//实现文件上传
	$filename=explode('.', $file);
	$time=time();
	$filename[0]=time();
	$filename=implode('.', $filename);
	$uploadfile=$filepath.$filename;
	$uploadResult=move_uploaded_file($filetemp, $uploadfile);
	//根据文件上传状态进行具体操作
	error_reporting(E_ALL ^ E_NOTICE); 
	if ($uploadResult==TRUE){
		//初始化EXCEL导入
		$excelReader = PHPExcel_IOFactory::createReader('Excel5');
		$objPHPExcel = $excelReader -> load($uploadfile);//获取需要导入文件
		$objWorksheet = $objPHPExcel -> getActiveSheet();
		$highestRow = $objWorksheet -> getHighestRow(); //计算行数
		$highestColumn = $objWorksheet->getHighestColumn();//计算列数
		$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//初始化列数索引总数
		//读取EXCEL数据文件
		for ($row = 2; $row <= $highestRow; $row++){
			//获取一行中每列的数据
			for ($col = 0 ; $col <$highestColumnIndex; $col++ ){
				$list[$col] = "'". $objWorksheet -> getCellByColumnAndRow($col, $row) -> getValue() ."'";
			}
			$sqlStr = join(',', $list);
			$sqlAll[]= $sqls.$sqlStr.');';
		}
		//执行SQL操作
		include 'BaseModel.php';
		$db = new BaseModel();
		$doImport = $db -> doArraySqlActionsTran($sqlAll);//使用事务进行批量导入		
		if ($doImport==TRUE){
			@unlink($uploadfile);//导入成功后删除上传文件
			return TRUE;
		}else{
			return FALSE;
		}
	}else {
		return FALSE;
	}
	Yii::app()->end();
        //恢复Yii自动加载功能
        spl_autoload_register(array('YiiBase','autoload'));
}

     该方法中没有进行数据格式的转换,大家可以根据自己的情况进行转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值