项目用thinkPHP3开发,想要实现将excel数据导入到数据库的功能;
需要:
下载PHPExcel-1.8(提取码:t3at ),GitHub有点慢甚至不走,建议在科学上网环境下去GitHub下载;
一个excel文件,我这里用的是网上下载的城市列表(提取码:wt04);
一个数据库表(自行看字段修改成你需要的表)
1、将解压好的“PHPExcel.php”和文件夹“PHPExcel”导入到核心类库下 \ThinkPHP\Library\Vendor\PHPExcel(新建);
2、控制器内引用
Vendor("PHPExcel.PHPExcel");
Vendor("PHPExcel.PHPExcel.IOFactory");
3、使用方法(完整代码)
Vendor("PHPExcel.PHPExcel");
Vendor("PHPExcel.PHPExcel.IOFactory");
$filename = './public/test/country.xls';//excel文件路径
$objPHPExcelReader = \PHPExcel_IOFactory::load($filename); //加载excel文件
$strarr=array();//定义一个空数组
foreach($objPHPExcelReader->getWorksheetIterator() as $sheet) //循环读取sheet
{
foreach($sheet->getRowIterator() as $row) //逐行处理
{
$lsstr="";//定义一个空字符串
if($row->getRowIndex()<2) //确定从哪一行开始读取
{
continue;
}
foreach($row->getCellIterator() as $cell) //逐列读取
{
$data = $cell->getValue(); //获取cell中数据
$lsstr=$lsstr."/".$data;//得到的数据格式 /1/2/3/4
}
$lsstr=substr($lsstr,1);//截取 将头部/删掉
$strarr[]=explode("/",$lsstr); //分割成数组
}
}
foreach ($strarr as $value){ //遍历数组
if ($value[0]!=""){
$inarr=array(
"cid"=>$value[0],
"name"=>$value[1],
"parent_id"=>$value[2],
"shortname"=>$value[3],
"leveltype"=>$value[4],
"citycode"=>$value[5],
"zipcode"=>$value[6],
"mergername"=>$value[7],
"lng"=>$value[8],
"lat"=>$value[9],
"pinyin"=>$value[10]
);
$res=M("city")->add($inarr);
if ($res){
echo "插入数据成功!返回id:".$res.";<br />";
}
}
}
这是全部插入数据库后遍历出来的数据,3750条,果然大中华地大物博,把韩国日本的村名都算上也没这么多吧
至此结束!