php读取Excel数据插入数据库

人力资源管理系统。这其中无非就是对数据库的CURD操作。另外还有个功能就是批量导入用户(通过Excel文件),以及对于用户的群发短信(短信接口)。下面步入正题,说下通过PHP导入Excel文件。
由于目前只是读取,不用生成,所以采用这个PHP-ExcelReader类,效率会高一点吧。下载地址如下:http://sourceforge.net/projects/phpexcelreader/
我们需要的只有2个文件,即Excel文件夹下的 oleread.inc 和 reader.php,把这两个文件复制到项目目录即可。下面开始写代码,并带注释。
<?php
//首先导入一下这2个文件
require_once ‘Excel/reader.php’;
require_once ‘Excel/oleread.inc’;
//实例化类
$data = new Spreadsheet_Excel_Reader();
//设置编码,这个很重要,不然会乱码的
$data->setOutputEncoding(‘CP936′);
//开始读取Excel文件
$data->read(‘test.xls’);
//打印下读取的内容
print_r($data->sheets[0]['cells']);
//记录数,也就是Excel里面有多少行信息
echo $data->sheets[0]['numRows']
//列数,也就是Excel里面每一行有几个字段吧(暂且这么叫吧)
echo $data->sheets[0]['numCols']
//读取指定行数及列数的信息
echo $data->sheets[0]['cells'][$i][$j]
?>
呵呵,可以看到最后打印出的是个二维数组,没一个数组就是一行Excel信息。接下来呢,肯定得导入数据库吧,怎么处理呢?无非就是写SQL语句呗。当然在实际的项目中,肯定得先上传吧,呵呵,自己处理吧。
在这个操作中,唯一需要特别注意的就是编码问题吧。所以,我把自己写的案例发一下吧,仅供参考。
<?php
import(‘Excel/reader.php’);
import(‘Excel/oleread.inc’);
$data = new Spreadsheet_Excel_Reader();
$data->setOutputEncoding(‘CP936′);
$data->read(‘test.xls’);
$excel = $data->sheets[0]['cells'];
//下面开始写入数据库
$sqlstr = “”;
$number = count($excel);
foreach($excel as $k=>$v){
foreach($v as $k1=>$v1){
//转换编码后再保存到数据库,因为我的都是utf8编码
$v[$k1] = iconv(‘GB2312′,’UTF-8′,$v1);
}
//有一点需要注意才是读取文件后得到的数组的键值从1开始而不是0
if($k==$number){
//如果是最后一条记录,则写SQL语句时后面不是逗号而是分号了,这个要判断处理一下,不然SQL语句肯定出错
$sqlstr .= “(‘$v[1]‘,’$v[2]‘,’$v[3]‘,’$v[4]‘,’$v[5]‘,’$v[6]‘,’$v[7]‘,’$v[8]‘,’$v[9]‘)”.’;’;
}else{
//不是最后一条则以逗号分隔即可
$sqlstr .= “(‘$v[1]‘,’$v[2]‘,’$v[3]‘,’$v[4]‘,’$v[5]‘,’$v[6]‘,’$v[7]‘,’$v[8]‘,’$v[9]‘)”.’,’;
}
}
//开始执行SQL语句,我用的框架~
$this->query(“INSERT INTO `user` (`aid`, `name`, `sex`, `iyear`, `imonth`, `idcard`, `mobile`, `address`, `notes`) VALUES “.$sqlstr);
?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值