Symfony 2:在dabase中导入excel文件(PHPExcel)
我需要上传一个excel文件,并将数据库中的内容导入到相关表中 我已经创建了一个脚本来导入它。下面的脚本工作正常Symfony 2:在dabase中导入excel文件(PHPExcel),php,symfony,Php,Symfony,我需要上传一个excel文件,并将数据库中的内容导入到相关表中 我已经创建了一个脚本来导入它。下面的脚本工作正常 $excelObj = $this->get('phpexcel')->createPHPExcelObject($path_file); $sheet = $excelObj->getActiveSheet()->toArray(null,true,true,true); $em = $this->getDoctrine()->getMa
$excelObj = $this->get('phpexcel')->createPHPExcelObject($path_file);
$sheet = $excelObj->getActiveSheet()->toArray(null,true,true,true);
$em = $this->getDoctrine()->getManager();
//READ EXCEL FILE CONTENT
foreach($sheet as $i=>$row) {
if($i !== 1) {
$account = $em->getRepository('ExcelBundle:Users')->findOneByUsername($row['A']);
if(!$account) {
$user = new Users();
}
$user->setName($row['A']);
$user->setUsername($row['B']);
$user->setEmail($row['C']);
//... and so on
$em->persist($user);
$em->flush();
}
}
现在,我需要导入该行的名称,而不是导入excel文件的A行、B行…等。名称用户名电子邮件…等等
$user->setName($row['name']);
$user->setUsername($row['username']);
$user->setEmail($row['email']);
我该怎么做呢?因此您需要将标题行(第1行)映射到后续每一行中的实际值
foreach($sheet as $i=>$row) {
if($i == 1) {
$headings = $row;
} else {
$row = array_combine($headings, $row);
.... do the rest of your stuff here
$user->setName($row['name']);
$user->setUsername($row['username']);
$user->setEmail($row['email']);
....
}
嗨,马克,谢谢你的回答。由于我很少与PHPExcel合作,我不太理解您的建议。。。我展示的代码是创建
$row['name']
,$row['username']
,$row['email']
,等等的映射代码在这里做你的其他工作
意味着做你的代码已经在做的工作:$account=$em->getRepository('ExcelBundle:Users')->findOneByUsername($row>)['name'];if(!$account){$user=new Users();}$user->setName($row['name']);$user->setUsername($row['username']);$user->setEmail($row['email']);//……等等,$em->persist($user);$em->flush();
等等……谢谢您的解释