ThinkPHP 框架实现的读取excel导入数据库操作示例
本文实例讲述了ThinkPHP框架实现的读取excel导入数据库操作。分享给大家供大家参考,具体如下:
入口文件中:
require_onceVENDOR_PATH.'PHPExcel/PHPExcel/IOFactory.php'; require_onceVENDOR_PATH.'PHPExcel/PHPExcel.php';
PHP:
namespaceHome\Controller;
classExcelControllerextendsCommonController
{
publicfunctionImport(){
//vendor('PHPExcel.PHPExcel.IOFactory');
vendor("PHPExcel.PHPExcel.PHPExcel");
vendor("PHPExcel.PHPExcel.Writer.Excel5");
vendor("PHPExcel.PHPExcel.Writer.Excel2007");
//$excel=newPHPExcel();
$fileName='./trans_rate.xlsx';
date_default_timezone_set('PRC');
//读取excel文件
try{
$objPHPExcel=\PHPExcel_IOFactory::load($fileName);
$inputFileType=\PHPExcel_IOFactory::identify($fileName);
$objReader=\PHPExcel_IOFactory::createReader($inputFileType);
//$objPHPExcel=$objReader->load($fileName);
//确定要读取的sheet$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();
$highestColumn=$sheet->getHighestColumn();
//获取一行的数据
//$phone_str='';
for($row=3;$row<=$highestRow;$row++){
$row_data=$sheet->rangeToArray('A'.$row.':'.$highestColumn.$row,NULL,TRUE,FALSE);
//获取excel表中一行的数组数据
//dump($row_data);
$row_data=$row_data[0];
$time=date('Y-m-dH:i:s',strtotime(trim($row_data[0])));
$start_province=trim($row_data[1]);
$start_city=trim($row_data[2]);
...
//$phone_str.='"'.$phone.'",';
$where['phone']=$phone;
$id_arr=M(数据表名)->where($where)->getField('id');
$user_id=!empty($id_arr)?$id_arr:0;
$fields[]=[
'数据表字段'=>$user_id,//用户id
...
];
}
//dump($fields);
$rate_add=M(数据表名)->addAll($fields);
dump($rate_add);
echoM()->getLastSql();
if(!(0<$rate_add)){
CommonController::logProfile('添加excel数据,SQL:'.M()->getLastSql());$this->endBack(0);}
//echo$phone_str.'
';
//dump($user_id);
}catch(Exception$e){
die('加载文件发生错误:"'.pathinfo($fileName,PATHINFO_BASENAME).'":'.$e->getMessage());}}}
php读取excel表数据:
load($inputFileName);
}catch(Exception$e){
die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'":'.$e->getMessage());
}
//确定要读取的sheet
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();
$highestColumn=$sheet->getHighestColumn();
//获取一行的数据
for($row=1;$row<=$highestRow;$row++){
//Readarowofdataintoanarray
$rowData=$sheet->rangeToArray('A'.$row.':'.$highestColumn.$row,NULL,TRUE,FALSE);
//这里得到的rowData都是一行的数据,得到数据后自行处理
var_dump($rowData);
echo"
";
}
//$data为从excel中获取到的数组
for($i=0;$i';
$gettime=explode('-',$data[$i][0]);
if(checkdate($month=$gettime[0],$day=$gettime[1],$year=$gettime[2])){
echogmdate('Y-m-d',gmmktime(0,0,0,$month,$day,$year));
}else{
echo($data[$i][0]);
}
echo'-----------';
echo$data[$i][1];
}
load($inputFileName);
//确定要读取的sheet,什么是sheet,看excel的右下角,真的不懂去百度吧
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//最大行
$highestColumn=$sheet->getHighestColumn();//最大列
$data=array();
for($rowIndex=2;$rowIndex<=$highestRow;$rowIndex++){//循环读取每个单元格的内容。注意行从1开始,列从A开始
for($colIndex='A';$colIndex<=$highestColumn;$colIndex++){
$addr=$colIndex.$rowIndex;
if($colIndex==="A"){//指定H列为时间所在列
$cell=gmdate("Y-m-dH:i:s",PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($addr)->getValue()));
//$cell=PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell($addr)->getValue());
//var_dump($cell);die;
}else{
$cell=$sheet->getCell($addr)->getValue();
}
//if($cellinstanceofPHPExcel_RichText){//富文本转换字符串
//$cell=$cell->__toString();
//}
$data[$rowIndex][$colIndex]=$cell;
}
}
//return$data;
var_dump($data);
}catch(Exception$e){
die('加载文件发生错误:"'.pathinfo($inputFileName,PATHINFO_BASENAME).'":'.$e->getMessage());
}
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《ZendFrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。