首页 > php/ 网络技术 > 使用PHP把excel(xls)文件导入mysql数据库

使用PHP把excel(xls)文件导入mysql数据库

昨晚一个客户联系我做网站,提出的要求是需要把客户提供的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,

代码如下:

<?php 
require_once 'Excel/reader.php'; 
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding('gbk');//此处设置编码,一般都是gbk模式
 
$data->read('Book1.xls');//文件路径
 
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";
}
?>

注意:请不要使用PHP-ExcelReader压缩包里面的xls进行测试,断桥残雪发现,那个文件既是使用excel也打不开,所以是错误的。

断桥残雪使用上面的方法解析了一个1.4M的数据,都显示正常,所以大家可以放心使用

相关文章

"使用PHP把excel(xls)文件导入mysql数据库"已有14条评论
    freemouse

    好东东,mark一下

    2010年09月05日 22:35 回复 引用

    MOPVHS

    果然好用,谢啦~~~

    2010年10月11日 03:13 回复 引用

    断桥残雪

    哈哈,那就多帮我宣传下我的博客~

    2010年10月11日 03:32 回复 引用

    huoshanwei

    文件不可读是什么原因?
    The filename x.xls is not readable

    2011年03月07日 22:10 回复 引用

    断桥残雪

    文件没有读写权限,把读写权限改为777

    2011年03月07日 22:11 回复 引用

    yuelong

    要入库,只要把输出的地方,写一段mysql语句即可~我是菜菜鸟,这个怎么写啊。。我想把
    Excel里的列写入特定的表里面。

    2011年04月25日 17:02 回复 引用

    提问

    急找断桥大师,日期读出来的格式dd/mm/yy,mysql无法存储。帮帮忙.

    2011年05月12日 01:59 回复 引用

    提问

    读出来的日期还多一天,奇怪了

    2011年05月12日 02:04 回复 引用

    断桥残雪

    使用date格式化日期

    2011年05月12日 05:03 回复 引用

    断桥残雪

    日期是跟你的服务器配置时间相同的,你可以设置时区

    2011年05月12日 05:03 回复 引用

    提问

    年月日 上传以后 日+1.奇怪啊。

    2011年05月13日 05:54 回复 引用

    提问

    不是,就是在excel填写2010-9-8,上传后数据库里成了2010-9-9.

    2011年05月13日 05:55 回复 引用

    提问

    老大,还在么、在excel填写2010-9-8,上传后数据库里成了2010-9-9.求帮忙

    2011年05月15日 19:33 回复 引用

    林子

    在reader.php里面找到
    function createDate($numValue)
    ……
    $utcValue = round(($utcDays+1)
    修改为$utcValue = round(($utcDays+0) 即可解决导入日期多一天的情况

    2011年09月08日 00:41 回复 引用

文明发言,你好我也好
正在提交,请稍后...
返回顶部