今天项目上遇到需要将excel中的数据导入到数据库的classify表中,于是乎拼命上网查阅方法,发现以下两种方法比较可行:
在此之前先说说按照网上的说法我没有试验成功的方法,将excel文件xls保存为csv文件,利用phpadmin进行导入,遗憾的是,我在导入的过程中提示“。。。line 1”记不清了什么错误,总之是没有成功。
第一种比较可行的方法是博友(bo博)文章中提到方法,现在整理如下:
1.将选中的数据快儿拷贝到一个TXT文本文件中(记得把后面的空格消掉。。否则导入数据库后会有对应的空行),假如存到“D:\data.txt”这个位置里。
2.根据要导入的数据快儿建立MySql数据库和表,然后进入命令提示符里使用命令
load data local infile 'D:/data.txt' into table exceltomysql fields terminated by '\t';
注意:盘符我使用的“/”才成功,否则提示找不到文件 下面文章中是用的“\”!
进行导入操作
手动进行Excel数据和MySql数据转换
2006年09月16日 星期六 下午 02:44
今天是全国数学建模比赛,同学选的一个题目需要对一个large的Excel表格进行统计,好哥们儿嘛~~便帮助他完成了数据从Excel到MySql的转化。记下具体步骤分享给大家,也免得大家到网上到处乱找了。
假如要把如图所示的Excel表格导入到MySql数据库中,如图:
,
步骤一:
选取要导入的数据快儿,另外要多出一列,如下图:
步骤二:
将选中的数据快儿拷贝到一个新建的表格工作薄,然后“另存为” -》“文本文件(制表符分割)(*.txt)”,假如存到“D:\data.txt”这个位置里。如图:
步骤三:
根据要导入的数据快儿建立MySql数据库和表,然后使用命令
load data local infile 'D:\data.txt' into table exceltomysql fields terminated by '\t';
进行导入操作。如下图:
现在数据已经全部导入到MySql里了,
让我们来select一下吧,如图:
到此,数据由Excel到MySql的转换已经完成。
下面说下,数据从MySql到Excel的转化,其过程其实还是借助那个“制表符分割”的文本文件。
将如要将这个表中的男生信息导入到Excel中,可以这样。
select * into outfile 'D:\man.txt' from exceltomysql where xingbie="男";
如图:
这样,表中所有男生的信息都被输出到以制表符分割,'\n'结尾的文本文件D:\man.txt文件中。
你可以打开Excel,然后选择“数据”->“导入外部数据”->“导入数据”,选中“D:\man.txt”,一路确定就行了。
|
注意:这个方法我用过虽然可以插入到mysql数据库中,但是有乱码的危险。所以我更推荐使用下面的方法。
方法二:此方法是博友TVBBOY整理,我根据自己遇到的情况重新总结如下:
准备工作: PHP-ExcelReader,下载地址: http://sourceforge.net/projects/phpexcelreader 我用的是2007-07-06的那个压缩文件,下载后用到\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);
}
?>
文中红色标注为需要注意的地方,请替换成你配置好的数据,如数据库配置等。运行http://localost/ExcelToMysql.php实现导入。
(责任编辑:IT) |