PHPExcel: Error al abrir un archivo creado con la función php://output

Estoy utilizando la libreria PHPExcel para crear archivos Excel 2007 desde PHP al vuelo., pero al momento de descargar el archivo utilizando algo como lo siguiente:

header(‘Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet’);
header(‘Content-Disposition: attachment;filename=”pruebas.xlsx”‘);
header(‘Cache-Control: max-age=0’);

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel2007’);
$objWriter->save(‘php://output’);

Y al abrir el excel me aparece un error como el siguiente:

Excel no puede abrir el archivo ‘pruebas.xlsx’ porque el formato o la extensión de éste no son válidos. Compruebe que el archivo no se ha dañado y que la extensión del mismo coincide con el formato del archivo.

Pero el detalle esta en que si se genera para guardar el excel en disco duro, si se abre correctamente, entonceees!., el problema esta en la generación al vuelo que este enviando algo extraño.

La solución esta en el encoding de los archivos PHP, estos deben de estar en modo UTF-8 sin BOM (ANSI as UTF-8), para ver que tipo de codificación tenemos, instalamos el notepad++, despues en la parte inferior derecha aparecerá el encoding y pues verificar que diga ANSI as UTF-8, para convertir solo ingresar al menú Codificación.

Y listo!.., ya podemos crear nuestro archivo Excel., también no olviden verificar que no se mande nada de nada de texto (ni un espacio en blanco., nadaaa!)

Joomla: Error de codificación de contenido

Si les llega a suceder en Joomla (o Mambo) el siguiente error:

Error de codificación de contenido
La página que intentas ver no puede mostrarse porque usa una forma de compresión no válida o admitida.
Contacta a los propietarios del sitio web para informarles sobre este problema.

La solución es deshabilitar la compresión de las páginas con gZip, entonces en el archivo de configuration.php buscamos la linea $gzip y le ponemos valor 0.

public $gzip = ‘0’;

Listo!! reiniciamos la página web de joomla y todo normal.