2009-05-15 21 views
5

He estado buscando una buena clase de generación de archivos de Excel y todavía tengo que encontrar una - mi problema número uno es que aunque puedo obtener el archivo exportado para abrir en Excel (ejecutándose 2007), siempre recibo una advertencia que dice "el archivo está en un formato diferente a la extensión del archivo".Clase de generación/exportación de archivos PHP Microsoft Excel

Me di cuenta de que la exportación de Excel en phpMyAdmin incluso genera el mensaje de advertencia antes mencionado.

¿Qué código usan otros usuarios para este requisito común?

Actualización rápida Si configuro la extensión de archivo de mi archivo Excel generado como xml, se abre en el navegador (aunque estoy enviando los encabezados correctos), pero si elijo guardar el archivo xml y luego abrir de Excel, funciona sin ninguna advertencia! Desafortunadamente, eso es más complicado para los usuarios que simplemente hacer clic en 'Proceder de todos modos' con la advertencia que estoy recibiendo. ¿Alguna idea más?

Respuesta

2

he descubierto que la adición de los siguientes, bajo la declaración XML en mi archivo de Excel generado, asegura Excel abre el archivo con una extensión de archivo XML (en lugar del navegador web):

<?mso-application progid=\"Excel.Sheet\"?> 

También soy estableciendo los siguientes encabezados en php:

// deliver header (as recommended in php manual) 
header('Content-Type: application/vnd.ms-excel; charset=UTF-8'); 
header('Content-Disposition: attachment; filename="' . $filename . '.xml"'); 
2

Uso Spreadsheet_Excel_Writer de PERA

o

escribir el archivo en CSV format.
Pero utilizar Microsoft Sobresale comprensión de csv: Un punto y coma (;) como separador

+0

que he tomado un vistazo al paquete de PEAR, parece que mucho más trabajo para poner en práctica - además no estoy seguro de que va a resolver mi problema , que parece afectar solo a Excel 2007. – BrynJ

+0

¡No use el paquete PEAR, está desactualizado! Ha estado en beta desde 2006. ¡Use PHPExcel en su lugar! – markus

0

el archivo está en un formato diferente que la extensión de archivo

has necesitado guardar el archivo con otro archivo ¿extensión? Como "foo.xlsx" en lugar de "foo.xls".

+0

Tengo, sí - xls, xlsx y xml - todos con el mismo resultado. Supongo que está malformado de alguna manera, pero no estoy seguro exactamente qué. – BrynJ

+0

Ok, solo para agregar a lo anterior, de hecho, si configuro la extensión de archivo como xml, se abre en el navegador (aunque estoy enviando los encabezados correctos).Si elijo guardar el archivo xml y luego abrirlo desde Excel, ¡funciona sin advertencias! Desafortunadamente, eso es más complicado para los usuarios que simplemente hacer clic en 'Proceder de todos modos' con la advertencia que estoy recibiendo. – BrynJ

2

También deshabilita el cuadro de dialogo, utilizando regedit

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] 
“ExtensionHardening”=dword:00000000 
  • Inicio -> Ejecutar -> regedit
  • Ir a "HKEY_CURRENT_USER \ SOFTWARE \ MICROSOFT \ Office \ 12.0 \ Excel \ SECURITY"
  • Nueva DWORD
  • Tipo “ExtensionHardening” como el nombre y el valor 0 como
+0

Interesante, pero en realidad no es una solución viable para una aplicación web aunque +1 de todos modos. –

+0

+1 - Es posible que pueda usar esto en realidad, ya que estoy proporcionando esta funcionalidad en el área de administración de mi aplicación web, por lo que los usuarios son finitos (es una aplicación a medida). – BrynJ

8
+0

Gracias por el enlace: parece una clase muy completa, para ser honesto, está muy por encima de mis requisitos. – BrynJ

+1

No debe tener miedo del tamaño cuando la calidad es buena. Mucho mejor que usar la clase de PEAR obsoleta. – markus