开发过程中有一些数据,如报表信息、财务统计等信息使用excel进行存储,需要将文件导入到数据库中,下面我们将以一个简单的小例子,演示批量导入。
使用thinkphp5.0版本框架结合phpexcel1.8版本进行演示批量导入数据至数据库中,下面为示例代码:
/**
* 批量导入记录
*/
public function push()
{
//获取上传后的文件
$fileName = 'demo.xls';
//文件路径
$filePath = './txt/' . $fileName;
//实例化PHPExcel类
$PHPReader = new \PHPExcel_Reader_Excel5();
//读取excel文件
$objPHPExcel = $PHPReader->load($filePath);
//读取excel文件中的第一个工作表
$sheet = $objPHPExcel->getSheet(0);
$allRow = $sheet->getHighestRow(); //取得总行数
//$allColumn = $sheet->getHighestColumn(); //取得总列数
//从第二行开始插入,第一行是列名
for($j = 1; $j <= $allRow; $j++) {
$data['m_name'] = $objPHPExcel->getActiveSheet()->getCell("A" . $j)->getValue();
$data['m_phone'] = $objPHPExcel->getActiveSheet()->getCell("B" . $j)->getValue();
$data['m_status'] = 1;
$last_id = $this->member_model->insert($data);//保存数据,并返回主键id
if($last_id) {
echo "第" . $j . "行导入成功<br/>";
} else {
echo "第" . $j . "行导入失败!<br/>";
}
}
}
注意:thinkphp框架,在进行循环插入时不要使用db类,数量多的情况下会出现创建进程过多的情况,导致写入失败,建议使用模型方法,测试10000条数据未出现问题。