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!