0
私は助けが必要です、私は10から30列と20000以上の行を持つ多くのレポートを持っています、miドライバはmongodbであり、結果クエリは非常に高速ですが、 5または10分約遅すぎるか、いくつかの時間以上、私のコードは一つだけbucleありますphpExcelをエクスポートする時間を短縮
$row++;
$contUser = 0;
foreach ($data as $index => $objUser) {
$backgroundColor = $colorOdd;
if ($contUser % 2 == 0) {
$backgroundColor = $colorPair;
}
$field = $objUser->getFields();
$column = 0;
//case 'N°':
$sheet->setCellValueByColumnAndRow($column, $row, $contUser + 1);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
//case matricula:
$sheet->setCellValueByColumnAndRow($column, $row, $objUser->getChrUsername());
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
//case matricula:
$sheet->setCellValueByColumnAndRow($column, $row, $field['appaterno']['value']);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
//case matricula:
$sheet->setCellValueByColumnAndRow($column, $row, $field['apmaterno']['value']);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
//case matricula:
$sheet->setCellValueByColumnAndRow($column, $row, $objUser->getChrFirstname());
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
//$field['dni']['value']
$column++;
$type = PHPExcel_Cell_DataType::TYPE_STRING;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['dni']['value'], $type);
//$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
//$field['sociedad']['value']
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['sociedad']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['gerenciacentral']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['division']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['area']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['servicio']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['funcion']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['fecha']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['divpersonal']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['subpersonal']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['superior']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['matsuperior']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['estado']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['iniestado']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($field['finestado']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($objUser->getChrEmail(), $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit(empty($field['agencia']['value'])?'':$field['agencia']['value'], $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$date = '';
$time = '';
if(!empty($this->lastAccessQuiz) && $this->lastAccessQuiz>0){
$date = date("Y-m-d", $this->lastAccessQuiz);
$time = date("H:i:s", $this->lastAccessQuiz);
}
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($date, $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$column++;
$sheet->getCellByColumnAndRow($column, $row)->setValueExplicit($time, $type);
$sheet->getColumnDimensionByColumn($column)->setAutoSize(true);
$sheet->getStyleByColumnAndRow($column, $row)->applyFromArray($styleArray);
$sheet->getStyleByColumnAndRow($column, $row)->getFill()->applyFromArray(array('type' => \PHPExcel_Style_Fill::FILL_SOLID, 'startcolor' => array('rgb' => $backgroundColor)));
$row++;
$contUser++;
}
ストレートな回答はここではできませんが、私は大量のデータをたくさんインポートしていますが、20000+行のものは5〜20分の時間です。あなたのスクリプトを遅くするボトルネックがあれば、それらを見つけなければなりません。トピック:cachgrindとxdebugなど... – JustOnUnderMillions