PHP - como pasar a un excel una consulta con mas de 80000 registros?

 
Vista:
Imágen de perfil de Eduardo

como pasar a un excel una consulta con mas de 80000 registros?

Publicado por Eduardo (1 intervención) el 25/09/2017 17:30:00
estoy intentando crear un excel apartir de una base de datos mi problema es que al intentar crear el excel despues de realizar la consulta este tarda demasiado y cuando concluye me dice que el formato esta mal y me causa un error este es mi codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
$conexion = new mysqli('localhost','root','','proyectovw');
if (mysqli_connect_errno()) {
   printf("La conexión con el servidor de base de datos falló: %s\n", mysqli_connect_error());
   exit();
}
$consulta = "SELECT NAVE,PROYECTO,PROCESO,LINEA,AFO,NOMBREPADRE,MODELOBEMIPADRE,DESCRIPCION,CANTPADRES,NOMBREEQUIPO,MARCAEQUIPO,TYPE,NUMSERIE,DESCRIPCIONCOMPLEMENTARIA,MAXIMO,CANTELEMENTO,NOMENCLATURA,NUMTABLERO,OBSERVACIONES,NUMINVENTARIO FROM datos";
 
$resultado = $conexion->query($consulta);
$registros = mysqli_num_rows($resultado);
/** Se agrega la libreria PHPExcel */
require_once 'lib/PHPExcel/PHPExcel.php';
 
 
date_default_timezone_set('America/Mexico_City');
 
 
if($registros > 0 )
{
    // Se crea el objeto PHPExcel
    $objPHPExcel = new PHPExcel();
 
    $tituloReporte = "Levantamiento de tiguan";
 
// Se agregan los titulos del reporte
	$objPHPExcel->setActiveSheetIndex(0)
	->setCellValue('A1',$tituloReporte)
	->setCellValue('A3',  "NAVE")
    ->setCellValue('B3',  "PROYECTO")
	->setCellValue('C3',  "PROCESO")
	->setCellValue('D3',  "LINEA")
	->setCellValue('E3',  "AFO")
	->setCellValue('F3',  "NOMBRE DEL PADRE")
	->setCellValue('G3',  "'MODELO/#ro/BEMI DEL PADRE")
	->setCellValue('H3',  "DESCRIPCION COMPLEMENTARIA")
	->setCellValue('I3',  "CANT. PADRES")
	->setCellValue('J3',  "NOMBRE DE EQUIPO")
	->setCellValue('K3',  "MARCA DE EQUIPO")
	->setCellValue('L3',  "MODELO DE QUIPO")
	->setCellValue('M3',  "NO. SERIE")
	->setCellValue('N3',  "DESCRIPCION COMPLEMENTARIA")
	->setCellValue('O3',  "#RO DE PARTE VW (Maximo)")
	->setCellValue('P3',  "CANTIDAD DE ELEMENTO")
	->setCellValue('Q3',  "NOMENCLATURA DEL EQUIPO")
	->setCellValue('R3',  "NO. TABLERO")
	->setCellValue('S3',  "OBSERVACIONES")
	->setCellValue('T3',  "#RO DE INVENTARIO");

//Se agregan los datos de la BD
    $i = 4;    
   while ($fila = mysqli_fetch_object($resultado)) 
   {
        $objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('A'.$i,  $fila->NAVE)
        ->setCellValue('B'.$i,  $fila->PROYECTO)
        ->setCellValue('C'.$i,  $fila->PROCESO)
        ->setCellValue('D'.$i,  $fila->LINEA)
        ->setCellValue('E'.$i,  $fila->AFO)
        ->setCellValue('F'.$i,  $fila->NOMBREPADRE)
        ->setCellValue('G'.$i,  $fila->MODELOBEMIPADRE)
        ->setCellValue('H'.$i,  $fila->DESCRIPCION)
        ->setCellValue('I'.$i,  $fila->CANTPADRES)
        ->setCellValue('J'.$i,  $fila->NOMBREEQUIPO)
        ->setCellValue('K'.$i,  $fila->MARCAEQUIPO)
        ->setCellValue('L'.$i,  $fila->TYPE)
        ->setCellValue('M'.$i,  $fila->NUMSERIE)
        ->setCellValue('N'.$i,  $fila->DESCRIPCIONCOMPLEMENTARIA)
        ->setCellValue('O'.$i,  $fila->MAXIMO)
        ->setCellValue('P'.$i,  $fila->CANTELEMENTO)
        ->setCellValue('Q'.$i,  $fila->NOMENCLATURA)
        ->setCellValue('R'.$i,  $fila->NUMTABLERO)
        ->setCellValue('S'.$i,  $fila->OBSERVACIONES)
        ->setCellValue('T'.$i,  $fila->NUMINVENTARIO);
        $i++;

    }
}


header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="ejemplo1.xlsx"');
header('Cache-Control: max-age=0');
 
$callStartTime = microtime(true);
 
$objWriter=PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');
$objWriter->save('php://output');
 
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
 
exit;
mysql_close ();
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder