Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: Oscar_Py en 25 de Junio 2015, 13:18

Título: Generar archivo Excel con PHP crear fichero y descargar librería excelPhp
Publicado por: Oscar_Py en 25 de Junio 2015, 13:18
Hola.

Mi código es el siguiente

(ver más abajo)

Al ejecutar en el navegador me descarga el archivo correctamente. Pero a la hora de abrir el archivo me sale el error: "EL ARCHIVO QUE INTENTA ABRIR TIENE OTRO FORMATO QUE EL ESPECIFICADO POR LA EXTENSION DEL ARCHIVO..."

Cuál será el error?
Título: Re:Generar Excel con PHP
Publicado por: Alex Rodríguez en 25 de Junio 2015, 22:08
Hola Oscar, para pegar código hazlo como se indica en https://www.aprenderaprogramar.com/foros/index.php?topic=1460.0, de esa forma el código quedará adecuadamente formateado.

Estás cargando un archivo en la ruta /lib/Classes/PHPExcel.php

Supongo que se trata de una librería, ¿de dónde has descargado esta librería?

Saludos
Título: Re:Generar Excel con PHP
Publicado por: Oscar_Py en 26 de Junio 2015, 13:28

La descargué de:
https://phpexcel.codeplex.com/releases/view/119187
creo que es la página oficial.

Además, muchas gracias por las indicaciones, pego de vuelta el código, ahora correctamente:

Código: [Seleccionar]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<?php 
require_once ('../lib/Classes/PHPExcel.php');
error_reporting(E_ALL);
ini_set('display_errors'1);
$objPHPExcel = new PHPExcel();
// Establecer propiedades
$objPHPExcel->getProperties()
->
setCreator("Cattivo")
->
setLastModifiedBy("Cattivo")
->
setTitle("Documento Excel de Prueba")
->
setSubject("Documento Excel de Prueba")
->
setDescription("Demostracion sobre como crear archivos de Excel desde PHP.")
->
setKeywords("Excel Office 2007 openxml php")
->
setCategory("Pruebas de Excel");

// Agregar Informacion
$objPHPExcel->setActiveSheetIndex(0)
->
setCellValue('A1''Valor 1')
->
setCellValue('B1''Valor 2')
->
setCellValue('C1''Total')
->
setCellValue('A2''10')
->
setCellValue('C2''=sum(A2:B2)');
// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Tecnologia Simple');

// 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="pruebaReal.xlsx"');
header('Cache-Control: max-age=0');

$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel2007');
$objWriter->save('php://output');
exit();

?>

.
Título: Re:Generar Excel con PHP
Publicado por: Alex Rodríguez en 26 de Junio 2015, 23:01
Hola, el código que pegaste me daba algunos errores. He cambiado algo quedando así:

Código: [Seleccionar]
<?php 
// 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="pruebaReal.xlsx"');
header('Cache-Control: max-age=0');
require_once (
'Classes/PHPExcel.php');
error_reporting(E_ALL);
ini_set('display_errors'1);
$objPHPExcel = new PHPExcel();
// Establecer propiedades
$objPHPExcel->getProperties()
->
setCreator("Cattivo")
->
setLastModifiedBy("Cattivo")
->
setTitle("Documento Excel de Prueba")
->
setSubject("Documento Excel de Prueba")
->
setDescription("Demostracion sobre como crear archivos de Excel desde PHP.")
->
setKeywords("Excel Office 2007 openxml php")
->
setCategory("Pruebas de Excel");

// Agregar Informacion
$objPHPExcel->setActiveSheetIndex(0)
->
setCellValue('A1''Valor 1')
->
setCellValue('B1''Valor 2')
->
setCellValue('C1''Total')
->
setCellValue('A2''10')
->
setCellValue('C2''=sum(A2:B2)');
// Renombrar Hoja
$objPHPExcel->getActiveSheet()->setTitle('Tecnologia Simple');

// Establecer la hoja activa, para que cuando se abra el documento se muestre primero.
$objPHPExcel->setActiveSheetIndex(0);
$objWriter PHPExcel_IOFactory::createWriter($objPHPExcel'Excel2007');
$objWriter->save('php://output');
exit();
?>


Con esto he logrado descargar el archivo excel y abrirlo con Excel 2013.

Si aún así te da problemas prueba a cambiar las líneas de header por esto:

Código: [Seleccionar]
header("Content-Type:   application/vnd.ms-excel; charset=utf-8");
header("Content-Disposition: attachment; filename=pruebaReal.xlsx");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);

Saludos
Título: Re:Generar archivo Excel con PHP crear fichero y descargar librería excelPhp
Publicado por: Oscar_Py en 29 de Junio 2015, 20:15
Muchas Gracias!! Ahora sí estoy avanzando con mi proyecto!