excel导入mysql数据库我整理了两种办法,一种就是使用PHP-ExcelReader来导入,另一种是把excel转换成csv文件直接使用php相关函数导入即可。
昨晚一个客户联系我做网站,提出的要求是需要把客户提供的excel文件里面的数据导入到mysql数据库,最常用的方法就是先把xls文件导出为csv格式的文件,然后在解析csv格式的文件导入到mysql数据库。方法比较冗余,而且分好几步进行,很不方便,断桥残雪今天介绍一种方法是直接跳过csv的中间环节,直接把excel文件导入mysql数据库。
首先我们需要下载PHP-ExcelReader这是一个开源的项目,主要是来解析excel的文件,下载地址:http://sourceforge.net/projects/phpexcelreader,下载之后解压,主要用到excel文件夹里面的两个文件reader.php和oleread.php(这个文件默认的是oleread.inc,不清楚为啥,一堆e文,没看,直接改名即可)。
在reader.php文件中找到以下类似代码(第一行既是),改成正确的oleread.php路径即可:require_once 'oleread.php';
然后新建一个php文件引入reader.php,代码如下:
代码如下
代码如下 |
复制代码 |
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');//此处设置编码,一般都是gbk模式
$data->read('Book1.xls');//文件路径bKjia.c0m
error_reporting(E_ALL ^ E_NOTICE);
//这里我就只循环输出excel文件的内容了,要入库,只要把输出的地方,写一段mysql语句即可~
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j ) {
echo """.$data->sheets[0]['cells'][$i][$j]."",";
}
echo "n";
}
?>
|
|
复制代码
|
require_once 'Excel/reader.php';
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');//此处设置编码,一般都是gbk模式
$data->read('Book1.xls');//文件路径bKjia.c0m
error_reporting(E_ALL ^ E_NOTICE);
//这里我就只循环输出excel文件的内容了,要入库,只要把输出的地方,写一段mysql语句即可~
for ($i = 1; $i <= $data->sheets[0]['numRows']; $i ) {
for ($j = 1; $j <= $data->sheets[0]['numCols']; $j ) {
echo """.$data->sheets[0]['cells'][$i][$j]."",";
代码如下 |
复制代码 |
//连接数据库文件 www.bKjia.c0m
$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
{
$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);
}
?>
|
} |
echo "n";
}
?>
注意:请不要使用PHP-ExcelReader压缩包里面的xls进行测试,断桥残雪发现,那个文件既是使用excel也打不开,所以是错误的。
断桥残雪使用上面的方法解析了一个1.4M的数据,都显示正常,所以大家可以放心使用
phpexcel比较费资源,不过并不是所有的excel都能读取 我们可以转换成csv来操作
首先确认你的数据库是什么编码的,以utf-8为例,
你首先打开excel 文件,然后保存,选择为另存为.csv文件。
然后用文本编辑器打开.csv文件,另存为utf-8的csv
然后你写php 可以使用php 的getcsv 打开(这样确保你有的字段中含有,而导致解析错误),然后把解析的结果导入到数据库中。
如果是csv格式的我就不必要这么麻烦了
代码如下
|
复制代码
|
<🎜>
//连接数据库文件 www.bKjia.c0m<🎜>
$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
{ <🎜>
$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); <🎜>
} <🎜>
?>
|