❶ 利用php导入excel文件
【步骤1】在前台html页面进行上传文件
<formmethod="post"action="php文件"enctype="multipart/form-data">
<h3>导入Excel表:</h3><inputtype="file"name="file_stu"/>
<inputtype="submit"value="导入"/>
</form>
【步骤2】在对应的php文件进行文件的处理
if(!empty($_FILES['file_stu']['name']))
{$tmp_file=$_FILES['file_stu']['tmp_name'];$file_types=explode(".",$_FILES['file_stu']['name']);$file_type=$file_types[count($file_types)-1];
/*判别是不是.xls文件,判别是不是excel文件*/if(strtolower($file_type)!="xls"){$this->error('不是Excel文件,重新上传');}
/*设置上传路径*/$savePath=SITE_PATH.'/public/upfile/Excel/';
/*以时间来命名上传的文件*/$str=date('Ymdhis');$file_name=$str.".".$file_type;
/*是否上传成功*/if(!($tmp_file,$savePath.$file_name)){$this->error('上传失败');}
/*
*对上传的Excel数据进行处理生成编程数据,这个函数会在下面第三步的ExcelToArray类中
注意:这里调用执行了第三步类里面的read函数,把Excel转化为数组并返回给$res,再进行数据库写入
*/$res=Service('ExcelToArray')->read($savePath.$file_name);
/*
重要代码 解决Thinkphp M、D方法不能调用的问题
如果在thinkphp中遇到M 、D方法失效时就加入下面一句代码
*/
//spl_autoload_register(array('Think','autoload'));
/*对生成的数组进行数据库的写入*/
foreach($resas$k=>$v){if($k!=0){$data['uid']=$v[0];$data['password']=sha1('111111');$data['email']=$v[1];
$data['uname']=$v[3];
$data['institute']=$v[4];$result=M('user')->add($data);if(!$result){$this->error('导入数据库失败');}}}
}
【步骤3】ExcelToArrary类,用来引用phpExcel并处理Excel数据的
{
publicfunction__construct(){
/*导入phpExcel核心类注意:你的路径跟我不一样就不能直接复制*/include_once('./Excel/PHPExcel.php');}
/**
* 读取excel $filename 路径文件名 $encode 返回数据的编码 默认为utf8
*以下基本都不要修改
*/
publicfunctionread($filename,$encode='utf-8'){
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objReader->setReadDataOnly(true);
$objPHPExcel=$objReader->load($filename);
$objWorksheet=$objPHPExcel->getActiveSheet();
$highestRow=$objWorksheet->getHighestRow();$highestColumn=$objWorksheet->getHighestColumn();$highestColumnIndex=PHPExcel_Cell::columnIndexFromString($highestColumn);$excelData=array();for($row=1;$row<=$highestRow;$row++){for($col=0;$col<$highestColumnIndex;$col++){$excelData[$row][]=(string)$objWorksheet->getCellByColumnAndRow($col,$row)->getValue();}}return$excelData;
}
}
❷ 如何用php实现将excel导入到数据库中
把excel
改为
cvs文件
?
//连接数据库文件
$connect=mysql_connect("localhost","admin","admin")
or
die("链接数据库失败!");
//连接数据库(test)
mysql_select_db("testcg",$connect)
or
die
(mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for
($i=0;$i
<count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通过循环得到EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert
into
ceshi
(name,num,dom)
values('$string[0]','$string[1]','$string[2]');";
mysql_query($q)
or
die
(mysql_error());
if
(!mysql_error());
{
echo
"
成功导入数据!";
}
echo
$string[4]."\n";
unset($string);
}
?
❸ PHP导入EXCEL到数据库的问题。
$_POST['file']取得的地址为服务器临时保存文件的地址,并不是当前php程序的目录,因此会发生找不到文件的问题,另外如果存到了没有访问权限的目录下,会出现不能读。
❹ 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('数据表名')->addAll($data);
非常简单吧,至于数据中的类型和验证等,自己在需要的位置设定就可以了
❺ 原生PHP代码实现excel导入,并添加数据到数据库.
我用的代码是:
<?
//连接数据库文件
$connect=mysql_connect("localhost","admin","admin") or die("链接数据库失败!");
//连接数据库(test)
mysql_select_db("testcg",$connect) or die (mysql_error());
$temp=file("test.csv");//连接EXCEL文件,格式为了.csv
for ($i=0;$i <count($temp);$i++)
{
$string=explode(",",$temp[$i]);//通过循环得到EXCEL文件中每行记录的值
//将EXCEL文件中每行记录的值插入到数据库中
$q="insert into ceshi (name,num,dom) values('$string[0]','$string[1]','$string[2]');";
mysql_query($q) or die (mysql_error());
if (!mysql_error());
{
echo " 成功导入数据!";
}
echo $string[4]."\n";
unset($string);
}
?>
--------------------------------------------------------------------------------
phpexcel或者pear的一个组件 ,国内有一个excelclass的插件
都是用来处理excel的,前2个功能都比较强大,对编码的支持也都不错,推荐使用pear的那个,名字好像叫spreadsheet reader
phpexcel比较费资源,不过并不是所有的excel都能读取
楼主可以到这里去看看 pear.php.net
--------------------------------------------------------------------------------
顶楼上的回答~~顺便接个分!嘿嘿
--------------------------------------------------------------------------------
AdO直接上传
注意有些字符mysql或ADO可能不支持
--------------------------------------------------------------------------------
首先确认你的数据库是什么编码的,以utf-8为例,
你首先打开excel 文件,然后保存,选择为另存为.csv文件。
然后用文本编辑器打开.csv文件,另存为utf-8的csv
然后你写php 可以使用php 的getcsv 打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。
然后完了。
❻ 如何通过PHP将excel的数据导入MySQL中
准备工作: 下载PHP-ExcelReader,下载后用到\phpExcelReader\Excel目录下的oleread.inc和reader.php两个文件,并将reader.php文件打开后require_once 'Spreadsheet/Excel/Reader/OLERead.php';屏蔽掉,增加为require_once 'oleread.inc'; 然后直接将这两个文件复制到服务器下WAMP,直接复制到WWW目录下,再将所需要的excel文件考进来我的文件是classify.xls,然后需要一个调用reader.php的文件,源代码如下:
ExcelToMysql.php
<?php
require_once 'reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');
$data->read('classify.xls'); //”classify.xls”是指要导入到mysql中的excel文件
@ $db = mysql_connect("localhost", "root", "") or
die("Could not connect to database.");//连接数据库
mysql_query("set names 'gbk'");//输出中文
mysql_select_db('japlearn'); //选择数据库
error_reporting(E_ALL ^ E_NOTICE);
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) {
//以下注释的for循环打印excel表数据
//以下代码是将excel表数据【6个字段】插入到mysql中,根据你的excel表字段的多少,改写以下代码吧!
$sql = "INSERT INTO classify VALUES('".
$data->sheets[0]['cells'][$i][1]."','".
$data->sheets[0]['cells'][$i][2]."','".
$data->sheets[0]['cells'][$i][3]."','".
$data->sheets[0]['cells'][$i][4]."','".$data->sheets[0]['cells'][$i][5]."','".$data->sheets[0]['cells'][$i][6]."')";
echo $sql.'<br />';
$res = mysql_query($sql);
}
?>
把上面代码注释的地方替换成自己配置好的数据,如数据库配置等。运行本机测试地址实现导入。
❼ PHP 用PHPExcel往数据库导入大量数据
1、首先我们准备一个含有数据的Excel表格,表头和数据表中的表字段相对应。
❽ 导入excel文件,后端php处理导入的数据并存入数据库,需要前后端结合的demo!
thinkphp3.2和phpexcel导入最基本用法
先整个最基础的代码,理解了这个,后面的就非常简单了
$file_name='./Upload/excel/123456.xls';
import("Org.Util.PHPExcel");
import("Org.Util.PHPExcel.IOFactory");
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn();//取得总列数
$s=$objPHPExcel->getActiveSheet()->getCell("A2")->getValue();
表格内容:
publicfunctionupload(){
$files=$_FILES['exl'];
//exl格式,否则重新上传
if($files['type']!='application/vnd.ms-excel'){
$this->error('不是Excel文件,请重新上传');
}
//上传
$upload=newThinkUpload();//实例化上传类
$upload->maxSize=3145728;//设置附件上传大小
$upload->exts=array('xls');//设置附件上传类型
$upload->rootPath='./Upload/';//设置附件上传根目录
$upload->savePath='excel/';//设置附件上传(子)目录
//$upload->subName=array('date','Ym');
$upload->subName='';
//上传文件
$info=$upload->upload();
$file_name=$upload->rootPath.$info['exl']['savepath'].$info['exl']['savename'];
$exl=$this->import_exl($file_name);
//去掉第exl表格中第一行
unset($exl[0]);
//清理空数组
foreach($exlas$k=>$v){
if(empty($v)){
unset($exl[$k]);
}
};
//重新排序
sort($exl);
$count=count($exl);
//检测表格导入成功后,是否有数据生成
if($count<1){
$this->error('未检测到有效数据');
}
//开始组合数据
foreach($exlas$k=>$v){
$goods[$k]['goods_sn']=$v;
//查询数据库
$where['goods_sn']=array('like','%'.$v.'%');
$res=M('goods')->where($where)->find();
$goods[$k]['goods_name']=$res['goods_name'];
$goods[$k]['goods_thumb']=$res['goods_thumb'];
if($res){
//是否匹配成功
$goods[$k]['is_match']='1';
$f+=1;
}else{
//匹配失败
$goods[$k]['is_match']='0';
$w+=1;
}
}
//实例化数据
$this->assign('goods',$goods);
//print_r($f);
//统计结果
$total['count']=$count;
$total['success']=$f;
$total['error']=$w;
$this->assign('total',$total);
//删除Excel文件
unlink($file_name);
$this->display('info');
}
/*处理上传exl数据
*$file_name文件路径
*/
publicfunctionimport_exl($file_name){
//$file_name='./Upload/excel/123456.xls';
import("Org.Util.PHPExcel");//这里不能漏掉
import("Org.Util.PHPExcel.IOFactory");
$objReader=PHPExcel_IOFactory::createReader('Excel5');
$objPHPExcel=$objReader->load($file_name,$encode='utf-8');
$sheet=$objPHPExcel->getSheet(0);
$highestRow=$sheet->getHighestRow();//取得总行数
$highestColumn=$sheet->getHighestColumn();//取得总列数
for($i=1;$i<$highestRow+1;$i++){
$data[]=$objPHPExcel->getActiveSheet()->getCell('A'.$i)->getValue();
}
return$data;
}
有问题一定要及时弄清楚