Autor Tema: Generar archivo Excel con PHP crear fichero y descargar librería excelPhp  (Leído 31518 veces)

Oscar_Py

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
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?
« Última modificación: 28 de Junio 2015, 12:55 por César Krall »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Generar Excel con PHP
« Respuesta #1 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

Oscar_Py

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Re:Generar Excel con PHP
« Respuesta #2 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();

?>

.

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Re:Generar Excel con PHP
« Respuesta #3 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

Oscar_Py

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 6
    • Ver Perfil
Muchas Gracias!! Ahora sí estoy avanzando con mi proyecto!

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".