あなたのコードを見ることからのほんの少しの簡単な観察:
$objPHPExcel->getActiveSheet()->insertNewRowBefore($row,1);
foreach()ループの反復ごとに繰り返す、コストのかかる操作です(ワークシート内のデータの量が増えると、コストも高くなります)。必要な行数を数え、ループする前にその数の新しい行を挿入します。
あなたが書いているすべてのセルに対して、あなたは以下を使用しています:
$objPHPExcel->getActiveSheet()->...
これには、すべてのセルに対してワークブックのgetActiveSheet()メソッドを呼び出す必要があります。ループの前にこれを1回実行し、返されたワークシートを変数($ 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()メソッドを使用して、1回の呼び出しで行のすべてのセルを設定できるとさらに便利です。
$objPHPExcel->getActiveSheet()->fromArray($dataRow,NULL,'B'.$row);