乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何用<em>thinkphp</em>实现将excel数据导入到mysql中-thinkphp

如何用<em>thinkphp</em>实现将excel数据导入到mysql中-thinkphp

作者:乔山办公网日期:

返回目录:excel表格制作


使用PHPexcel,你自己到网上搜这个插件吧,将需要的文件解压到Classes目录下,那么把这个目录放在框架thinkphp/extend/vendor/下面,我将自己项目中的部分代码给你看看

在ACTION中设置上传文件并获取文件:

import('ORG.Net.UploadFile');
$upload = new UploadFile();// 实例化上传类
$upload->maxSize = 3145728;// 设置附件上传大小
$upload->allowExts = array('xls');// 设置附件上传类型
$upload->savePath = './Uploads/';// 设置附件上传目录
if(!$upload->upload()) {// 上传错误提示错误信息
$this->error($upload->getErrorMsg());
}else{// 上传成功 获取上传文件信息
$info = $upload->getUploadFileInfo();
}
$filetmpname = './Uploads/'.$info[0]['savename'];

下面就需要使用phpexcel来解析
Vendor('Classes.PHPExcel');
$objPHPExcel = PHPExcel_IOFactory::load($filetmpname);
$excelarray= $objPHPExcel->getSheet(0)->toArray();
unlink($filetmpname);//删除上传的文件
//你要注意,excel表中如果从第一行的数据开始导入,那么直接按照下面的代码就可以,如果有表头之类的不需要的行,那么就是用 array_shift先删除数组中不需要的行
//循环给数据字段赋值

foreach($excelarr as $k=>$v){
$data[$k]['字段1']=$v[1];

$data[$k]['字段2']=$v[2];
$data[$k]['字段3']=$v[3];
$data[$k]['字段4']=$v[4];
$data[$k]['字段5']=$v[5];
}
上面的步骤就是获取了表格中的数据并赋值给了数组,下面就可以直接插入到数据库中了
$list=$charu=D('数据表7a686964616fe59b9ee7ad94339名')->addAll($data);

非常简单吧,至于数据中的类型和验证等,自己在需要的位置设定就可以了

第一步:建立数据库和数据表(按照自己的Excel数据设立字段)。
[sql] view plain copy print?
CREATE DATABASE php_excel;
USE php_excel;
CREATE TABLE IF NOT EXISTS php_excel(
id int(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
gid varchar(20) NOT NULL,
stu_no varchar(20) NOT NULL,
name varchar(45) NOT NULL,
age int(4) NOT NULL
)ENGINE=MyISAM DEFAULT CHARSET=utf8;

第二步7a686964616fe58685e5aeb9361:前台index.php文件。
[html] view plain copy print?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:///TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http:///1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>phpexcel导入excel数据到MYSQL数据库</title>
</head>

<body>
<form name="frm1" action="insertdb.php" method="post" enctype="multipart/form-data">
<input name="filename" type="file" />
<input name="submit" type="submit" value="import" />
</form>
</body>
</html>

第三步:向数据库插入数据的insertdb.php文件。
[php] view plain copy print?
session_start();
header("Content-type:text/html;charset:utf-8");
//全局变量

$succ_result=0;
$error_result=0;
$file=$_FILES['filename'];
$max_size="2000000"; //最大文件限制(单位:byte)
$fname=$file['name'];
$ftype=strtolower(substr(strrchr($fname,'.'),1));
//文件格式
$uploadfile=$file['tmp_name'];
if($_SERVER['REQUEST_METHOD']=='POST'){
if(is_uploaded_file($uploadfile)){
if($file['size']>$max_size){
echo "Import file is too large";
exit;
}
if($ftype!='xls'){
echo "Import file type is error";
exit;
}
}else{
echo "The file is not empty!";
exit;
}
}
require("./conn.php"); //连接mysql数据库

//调用phpexcel类库
require_once 'PHPExcel.php';
require_once 'PHPExcel\IOFactory.php';
require_once 'PHPExcel\Reader\Excel5.php';

$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
$objPHPExcel = $objReader->load($uploadfile);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow(); // 取得总行数
$highestColumn = $sheet->getHighestColumn(); // 取得总列数
$arr_result=array();
$strs=array();

for($j=2;$j<=$highestRow;$j++)
{
unset($arr_result);
unset($strs);
for($k='A';$k<= $highestColumn;$k++)
{
//读取单元格
$arr_result .= $objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue().',';
}
$strs=explode(",",$arr_result);
$sql="insert into php_excel(gid,stu_no,name,age) values ($strs[0],'$strs[1]','$strs[2]',$strs[3])";
echo $sql."<br/>";
mysql_query("set names utf8");
$result=mysql_query($sql) or die("执行错误");

$insert_num=mysql_affected_rows();
if($insert_num>0){
$succ_result+=1;
}else{
$error_result+=1;
}

}
echo "插入成功".$succ_result."条数据!!!";
echo "插入失败".$error_result."条数据!!!";

其中conn.php代码如下:
[php] view plain copy print?
$mysql=mysql_connect("localhost","root","") or die("数据库连接失败!");
mysql_select_db("php_excel",$mysql);
mysql_query("set names utf8");

我的导入效果如下:
至此,从Excel文件读取数据批量导入到Mysql数据库完成。
用Vendor();
//参考:写入excel
vendor ( "PHPExcel.PHPExcel" );
$objPHPExcel = new \PHPExcel();
$admin_info = session('user_auth');
$objPHPExcel->getProperties()->setCreator($admin_info['username'])->setLastModifiedBy($admin_info['username'])->setTitle("商机e799bee5baa6e79fa5e98193e59b9ee7ad94334信息导出");
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(9);
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth(45);
$objPHPExcel->getActiveSheet()->getColumnDimension('C')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(20);
$objPHPExcel->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('F')->setWidth(8);
$objPHPExcel->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('H')->setWidth(12);
$objPHPExcel->getActiveSheet()->getColumnDimension('I')->setWidth(15);
$objPHPExcel->getActiveSheet()->getColumnDimension('J')->setWidth(20);

// 字体和样式
$objPHPExcel->getActiveSheet()->getDefaultStyle()->getFont()->setSize(10)->setName('微软雅黑')->getColor()->setRGB('252525');

//设置excel列名
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1','ID');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B1','标题');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C1','供求');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D1','分类');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E1','新旧程度');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F1','产品所在地(省)');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G1','产品所在地(市)');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H1','产品所在地(区)');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I1','联系人');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J1','联系人电话');
//把数据循环写入excel中
foreach($data as $key => $value){
$key+=2;
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A'.$key,$value['id']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('B'.$key,$value['title']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('C'.$key,$sup_array[$value['supbuy']].'信息');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('D'.$key,$value['class_name'].'('.$value['class'].')');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('E'.$key,$new_and_old[$value['new_old']]);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('F'.$key,$value['trand_province_name'].'('.$value['trand_province'].')');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('G'.$key,$value['trand_city_name'].'('.$value['trand_city'].')');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('H'.$key,$value['trand_area_name'].'('.$value['trand_area'].')');
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('I'.$key,$value['atten_name']);
$objPHPExcel->setActiveSheetIndex(0)->setCellValue('J'.$key,$value['atten_mobile']);

}
/excel保存在根目录下 如要导出文件,以下改为注释代码
$objPHPExcel->getActiveSheet() -> setTitle('SetExcelName');
$objPHPExcel->setActiveSheetIndex(0);
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$name = md5(NOW_TIME);
$file = 'Data/exprot/'.$name.'.xlsx';
$objWriter->save('./Data/exprot/'.$name.'.xlsx');
$this->success('导出成功',think_encrypt($file),true);

这是我写过的,绝对能用,不行你再找我!!

<?php
if($_POST[sub]){

$uptypes=array('application/vnd.ms-excel','application/octet-stream');
$max_file_szie=20*pow(2,20); //上传636f7079e79fa5e98193332的文件小于20MB
$destination_folder='../conn/'; //上传文件保存路径
if($_SERVER['REQUEST_METHOD']=='POST'){
if(!is_uploaded_file($_FILES['upfile']['tmp_name'])){

exit("<script> alert('文件不存在!');history.back();</script>");
}
if($max_file_szie<$_FILES['upfile']['size']){

exit("<script> alert('文件太大了!');history.back();</script>");
}
if(!in_array($_FILES['upfile']['type'],$uptypes)){
echo '文件类型不符合!'.$_FILES['upfile']['type'];
exit("<script> alert('文件类型不符合!');history.back();</script>");

}
if(!file_exists($destination_folder)){
mkdir($destination_folder);
}
$filename=$_FILES['upfile']['tmp_name'];
$image_size=getimagesize($filename);
$pinfo=pathinfo($_FILES['upfile']['name']); //文件路径信息
$ftype=$pinfo['extension']; //旧文件后缀名
$destination = $destination_folder.$_FILES['upfile']['name']; //新文件名称

if(file_exists($destination)&&$voerwrie !=true){

exit("<script> alert('同名文件已经存在了!');history.back();</script>");

}
//把上传的文件从临时文件夹移动到指定目录
if(!move_uploaded_file($filename,$destination)){

exit("<script> alert('移动文件出错了!');history.back();</script>");
}
$pinfo=pathinfo($destination);
$fname=$pinfo[basename];
$tpfile=$destination;//上传文件名

//-----------上传成功,导入数据star-----

$dataf=$tpfile;
if(!file_exists($dataf))
{
exit("文件不存在"); //文件不存在

}

$file = fopen("$dataf",'r');

while ($d = fgetcsv($file)) { //每次读取CSV里面的一行内容
//print_r($d); //此为一个数组,要获得每一个数据,访问数组下标即可
$type="`uid`='$d[0]' && name='$d[1]'";
$dsql=dbst($tableqz.message2,$type);

if(!$dsql){
$uid=trim($d[0]); //编号
$name=trim($d[1]); //客户名称
$type="(`uid`, `username`, `password`) VALUES (NULL, '$uid', '$name');";
dbin(hh_members,$type);
}
}

fclose($file);
unlink("$dataf");

}

//---上传end

exit("<script> alert('成功导入了所有数据!');history.back();</script>");
}
?>

相关阅读

关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网