借鉴了一个朋友的思路:http://mxp556.blog.hexun.com/23315689_d.html;
简单思路如下:
1、将excel文件另存为txt文件。
2、用fopen()读取文件内容。
3、分析文件内容的结构,构成sql语句。
4、执行sql语句。
ok,下面开始举例。(最重要的是掌握思路!)
假设有一个test.xls的excel文件存储着我们要导入的内容。内容如下:

首先将test.xls文件另存为test.txt文件(注意:要选择制表符分割的那个.txt)

,中间可能会有什么提示,不管它,直接点“确定”或者“是”。然后打开test.txt文件,将它的编码另存为utf-8或者是gb2312,最主要是要跟下面的编码统一,以防出现乱码。
<?php
header("Content-type:text/html;charset=utf-8"); //强制页面以utf-8编码显示,跟前面test.txt文件的编码要一致。
$conn=@mysql_connect("localhost","root","123456") or die("连接数据失败"); //连接数据库.
@mysql_select_db("test",$conn) or die("打开数据库失败"); //选择数据库,自己创建,还有表也是自己先建好来。
mysql_query("set names utf8");//跟上面的编码要统一,还有要注意的是utf8,不是utf-8。
$file=@fopen("test.txt",'r') or die("打开文件失败"); // 以只读方式打开test.txt文件。
//我们打开test.txt文件,可以看到test.txt文件内容的每一行与test.xls文件的每一行相对应。
//也就是说除了第一行外,每一行就相当于表的一条记录,我们只要循环插入每一行数据到表中就行了。
fgets($file); //先读取文件的第一行,因为第一行不是我们要的内容。
//下面循环读取每一行,第一行已经读取了,所以从第二行开始读取。
while(!feof($file)){
$val=fgets($file);
//下面一步很关键,用explode()将每一行转换为数组来存储每个字段的值。
//比如说第二行的内容是:1 陈勇文 男 电子商务;
//转换为数组就变成array(1,"陈勇文","男","电子商务");这对于我们插入数据库就很有帮助了。
$values=explode("\t",trim($val)); //注意用来分割的是制表符"\t",而不是空格" " ,自己也可以输出来测试一下。
$sql="insert into `test`(`id`,`name`,`sex`,`major`) values('$values[0]','$values[1]','$values[2]','$values[3]')";
if(!empty($values[0])) mysql_query($sql); //因为最后一行可能是空数据,所以做了个判断。
}
fclose($file);
?>搞定,收工。有问题欢迎提出。
//经一个朋友提醒,将excel文件转换为csv格式更好,然后用fetcsv()读取每一行,这样可以直接把每一行转换为数组,不用explode()分割了。
« 上一篇:采集---强大的“小偷” php+mysql+thinkphp学生选课系统:下一篇 »
发表于 2009年12月21日 5:50 下午
我也是将excel文件转换成csv文件,然后将csv文件上传到服务端,对上传的临时csv文件进行入库处理。
[回复]
陈勇文 回复:
十二月 21st, 2009 at 6:22 下午
嗯,我也试了,确实不错。
[回复]
发表于 2009年12月26日 7:06 下午
果然是PHP牛人啊!
哈哈哈
[回复]
发表于 2010年02月21日 10:35 下午
呵呵,不错
有精力不妨也看看Perl、Python,它们处理得更妙
[回复]
发表于 2010年04月11日 9:39 下午
我有很多文章,把标题和文章内容放在excel里面,博主知不知道有什么方法可以把他们导入到wordpress的MySQL中
[回复]
陈勇文 回复:
四月 11th, 2010 at 9:50 下午
我介绍的这种方法就可以。原理是想相通的。
[回复]
发表于 2010年04月12日 7:26 上午
我找到更便捷的方法了
[回复]
陈勇文 回复:
四月 12th, 2010 at 7:42 上午
呵呵,可以说一下,互相学习。
[回复]
发表于 2010年04月12日 1:08 下午
找到个导入csv的插件,不过还是分几次导如入的,记录太多了16000+
具体网站 http://tcodes.tk
[回复]
发表于 2010年05月14日 10:48 上午
分析得很清楚,又学到一招,呵呵
[回复]
发表于 2010年08月22日 2:12 下午
在吗
[回复]
发表于 2010年08月22日 2:14 下午
怎么改成.txt的打开后字段都不对齐了
[回复]