PHP - Exportar de PHP a Excel. Ayuda

 
Vista:

Exportar de PHP a Excel. Ayuda

Publicado por Thunderroy (2 intervenciones) el 26/01/2016 21:41:58
Saludos Comunidad y muchas gracias de antemano por la ayuda que me puedan dar.

Yo he hecho una app en PHP que me exportaba la tabla resultante de la consulta en PHP a un Excel sin problemas para su posterior análisis de los datos. No había tenido ningún tipo de problemas hasta hoy, en que se me ocurrió hacer cálculos con los datos exportados a excel. Cuando por ejemplo sumo dos celdas en ese Excel importado me sale esto#!VALOR!. El formato de celda lo tiene en numero, salen los datos bien. Ya no sé que pensar. Espero me puedan ayudar.

Algunas de las sintaxsis que empleo a la hora de exportar a Excel son estas:

1
2
3
4
5
6
7
8
9
10
11
12
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script language="javascript">
$(document).ready(function() {
	$(".botonExcel").click(function(event) {
		$("#datos_a_enviar").val( $("<div>").append( $("#Exportar_a_Excel").eq(0).clone()).html());
		$("#FormularioExportacion").submit();
});
});
</script>
<form action="ficheroExcel.php" method="post" target="_blank" id="FormularioExportacion">
<p>Exportar a Excel  <img src="export_to_excel.gif" class="botonExcel" /></p>
<input type="hidden" id="datos_a_enviar" name="datos_a_enviar" /></form>

y la tabla que genero tiene por supuesto esto :
echo '<table class="table table-condensed" id="Exportar_a_Excel">

El ficheroExcel.php dentro contiene lo siguiente

1
2
3
4
5
6
7
8
<?php
header("Content-type: application/vnd.ms-excel; name='excel'");
header("Content-Disposition: filename=ficheroExcel.xls");
header("Pragma: no-cache");
header("Expires: 0");
 
echo $_POST['datos_a_enviar'];
?>

Gracias mil
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
sin imagen de perfil

Exportar de PHP a Excel. Ayuda

Publicado por Jose Antonio (10 intervenciones) el 01/02/2016 10:50:47
puedo ayudarte con este tema? skype:weboculta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
-1
Comentar
Imágen de perfil de Mariano

Exportar de PHP a Excel. Ayuda

Publicado por Mariano (2 intervenciones) el 02/02/2016 21:12:30
hola con respecto a tu problema
yo siempre utilizo una libreria que se llama PHPExcel :)

realmente tu mismo construyes todo el contenido del archivo excel
tanto nombres de las columnas, nombre del documento, nombre de la hoja y defines el tipo de dato que se inserta en la celda mi codigo lo puedes adaptar a tu ejemplo solo es demostrativo

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
/** Incluir la libreria PHPExcel */
 
require_once 'Classes/PHPExcel.php';
 
 
date_default_timezone_set('America/Mexico_City');
 
 
$cacheMethod = PHPExcel_CachedObjectStorageFactory:: cache_to_phpTemp;
$cacheSettings = array( ' memoryCacheSize ' => '100MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings);
 
// Crea un nuevo objeto PHPExcel
$objPHPExcel = new PHPExcel();
 
// Establecer propiedades
$objPHPExcel->getProperties()
->setCreator("Interactive")
->setLastModifiedBy("Interactive")
->setTitle("Reporte de Ventas")
->setSubject("Reporte de Ventas")
->setDescription("Archivo de Informacion de Ventas")
->setKeywords("Excel Office 2007")
->setCategory("Reportes Interactive");
 
//Titulos
$titulosColumnas = array('IdRegistro','curDate','curTime','messageFromId','messageFromName','MichelinCustomerNbr','countryCode','seccion','mspn','dealerStoreNbr','dealerCustNbr','uom','qty','sellOutDate','dealerPartNbr','salesPrice','michAAN','brandCd','fecha','ip','EstadoRegistro','Prefijo','Procedencia','IdNegocio');
 
// Agregar Informacion
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1',$titulosColumnas[0])
->setCellValue('B1',$titulosColumnas[1])
->setCellValue('C1',$titulosColumnas[2])
->setCellValue('D1',$titulosColumnas[3])
->setCellValue('E1',$titulosColumnas[4])
->setCellValue('F1',$titulosColumnas[5])
->setCellValue('G1',$titulosColumnas[6])
->setCellValue('H1',$titulosColumnas[7])
->setCellValue('I1',$titulosColumnas[8])
->setCellValue('J1',$titulosColumnas[9])
->setCellValue('K1',$titulosColumnas[10])
->setCellValue('L1',$titulosColumnas[11])
->setCellValue('M1',$titulosColumnas[12])
->setCellValue('N1',$titulosColumnas[13])
->setCellValue('O1',$titulosColumnas[14])
->setCellValue('P1',$titulosColumnas[15])
->setCellValue('Q1',$titulosColumnas[16])
->setCellValue('R1',$titulosColumnas[17])
->setCellValue('S1',$titulosColumnas[18])
->setCellValue('T1',$titulosColumnas[19])
->setCellValue('U1',$titulosColumnas[20])
->setCellValue('V1',$titulosColumnas[21])
->setCellValue('W1',$titulosColumnas[22])
->setCellValue('X1',$titulosColumnas[23]);
 
 
$sql = "select * from db_xml.dbo.TblXml
            where idnegocio = $idnegocio 
            and EstadoRegistro = 1
            and CAST(substring(sellOutDate,1,4)+''+substring(sellOutDate,6,2)+''+substring(sellOutDate,9,2) AS int) 
            between $finicio and $ffin";
$result = mssql_query($sql);
 
$row = 2; // 1-based index
while($row_data = mssql_fetch_assoc($result)) {
    $col = 0;
    foreach($row_data as $key=>$value) {
        $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row, $value);
        $col++;
    }
    $row++;
}
 
 
for($i = 'A'; $i <= 'X'; $i++){
    $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension($i)->setAutoSize(TRUE);
}
 
// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Detalle');
 
// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
$objPHPExcel->setActiveSheetIndex(0);
 
// Se modifican los encabezados del HTTP para indicar que se envia un archivo de Excel.
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Ventas de '.$idnegocio.'.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar