2011-09-08 15 views
13

Bien, aquí está mi dilema.Cómo generar archivos de Excel con Autofiltros en PHP?

He estado trabajando en un complemento de Wordpress para Medical Marcom para actualizar automáticamente su lista de doctores de Twitter de EE. UU. Básicamente, ofrece la posibilidad de crear un formulario donde los usuarios pueden solicitar que se agregue a la lista, las solicitudes se pueden confirmar en el panel de administración, cuando se agregan están disponibles en el archivo de Excel y se completan los datos iniciales, y finalmente , ciertos campos se actualizan automáticamente durante toda la semana.

Aquí está el problema.

Mi código está generando un archivo de Excel con PHP usando PHPExcel. Sin embargo, necesito tener un autofiltro simple aplicado a la hoja al inicio (sinceramente, no sé cuál es el problema ... cualquiera puede aplicar fácilmente un autofiltro en Excel, pero quiere que esté disponible desde el principio). Entonces, traté de aplicar el código que encontré:

$excel->getActiveSheet()->setAutoFilter('A1:J' . $row); 

$ excel es mi instancia de PHPExcel. $ row es la última fila que se genera desde la base de datos. El archivo se genera de inmediato cuando se hace clic en la URL y cabeceras de PHP se establecen para traducir la salida como un archivo de Excel, así:

header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=" . $file); 

Pero al abrir el archivo, no se establece ningún Autofiltros ... Probé posting a question over at PHPExcel's website, pero no recibí ninguna respuesta, así que decidí preguntar aquí.

¿Alguien sabe lo que puedo estar haciendo mal? Por ahora va con el archivo original (aunque actualizado un poco) hasta que se resuelva este problema.

Respuesta

1

Entiendo por this link que todavía no se ha implementado.

Parece que todavía es un work item (con una baja prioridad lo siento).

[EDIT] parece que puede funcionar con Excel 2007 (vea este work item). ¿Qué versión de Excel usa tu cliente?

+0

Tendré que preguntarle al respecto. He visto que se ha implementado, y se muestra en la documentación, pero no funcionó. Otra persona que publicó un elemento de trabajo aparentemente lo había puesto en funcionamiento, simplemente no tenía las funciones avanzadas. Estaba empezando a pensar, sin embargo, que podría haber estado tratando de generar el tipo incorrecto de archivo de Excel. Iré a preguntarle a mi cliente si está bien usar Excel 2007. El archivo actual es 2003, desafortunadamente ... – JaidynReiman

23

En caso de que alguien se encuentre con esta pregunta. La característica ha sido implementada tanto para XLSX como para XLS.

sólo tiene que especificar el alcance de la fila de cabecera para que funcione:

$excel->getActiveSheet()->setAutoFilter('A1:J1'); 
+0

Solo se especifica la fila del encabezado. ¡Gracias! – Oak