通过查看您的代码,只需快速观察一下:
$objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1);
是一项昂贵的操作(并且随着工作表中数据量的增加而变得更加昂贵),您将在 foreach() 循环的每次迭代中重复该操作。计算您需要多少行,然后在循环之前插入那么多新行。
对于您正在编写的每个单元格,您正在使用:
$objPHPExcel->getActiveSheet()->...
这需要为每个单元格调用工作簿的 getActiveSheet() 方法。在循环之前执行一次,将返回的工作表存储在一个变量中(例如 $ws),然后调用
$ws->setCellValue()
设置您的单元格值。
或使用流畅的界面:
$objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $first_line)
->setCellValue('B'.$row, ucwords($dataRow['intlcode']))
->setCellValue('C'.$row, ucwords($dataRow['mobile_number']))
->setCellValue('D'.$row, ucwords($dataRow['r_datetime']))
->setCellValue('E'.$row, $dataRow['fname'])
->setCellValue('F'.$row, $dataRow['lname'])
->setCellValue('G'.$row, $dataRow['email'])
->setCellValue('H'.$row, $dataRow['picture'])
->setCellValue('I'.$row, $dataRow['lang'])
->setCellValue('J'.$row, $dataRow['interests'])
->setCellValue('K'.$row, $dataRow['title'])
->setCellValue('L'.$row, $dataRow['company'])
->setCellValue('M'.$row, $dataRow['address'])
->setCellValue('N'.$row, $dataRow['app_status']);
如果您可以使用 fromArray() 方法在一次调用中设置行中的所有单元格,那就更好了。
$objPHPExcel->getActiveSheet()->fromArray($dataRow,NULL,'B'.$row);