2011-09-08 24 views
13

Ok, ecco il mio dilemma.Come generare file Excel con i filtri automatici in PHP?

Ho lavorato a un plug-in Wordpress per Medical Marcom per aggiornare automaticamente il suo elenco di US Twitter Doctors. Fondamentalmente, offre la possibilità di creare un modulo in cui gli utenti possono richiedere di essere aggiunti all'elenco, le richieste possono essere confermate nel pannello di amministrazione, quando vengono aggiunte sono disponibili nel file Excel e i dati iniziali vengono compilati, e infine , alcuni campi vengono automaticamente aggiornati durante la settimana.

Ecco il problema.

Il mio codice sta generando un file Excel con PHP utilizzando PHPExcel. Tuttavia, ho bisogno di un semplice filtro automatico applicato al foglio all'avvio (onestamente, non so quale sia il grosso problema ... chiunque può facilmente applicare un filtro automatico in Excel, ma lo vuole disponibile sin dall'inizio). Quindi, ho provato ad applicare il codice che ho trovato:

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

$ excel è la mia istanza PHPExcel. $ row è l'ultima riga emessa dal database. Il file viene generato immediatamente quando l'URL viene cliccato e le intestazioni di PHP sono impostati a tradurre l'output come un file Excel, in questo modo:

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

Ma quando ho aperto il file, non viene impostato alcun filtri automatici ... ho provato posting a question over at PHPExcel's website, ma non ho ricevuto alcuna risposta, quindi ho deciso di chiedere qui.

Qualcuno sa cosa potrei fare di sbagliato? Per ora sta andando con il file originale (aggiornato un po ', però) fino a quando questo problema è stato risolto.

risposta

1

Capisco da this link che non è stato ancora implementato.

Sembra che sia ancora un work item (con una priorità bassa scusa).

[EDIT] sembra funzionare con Excel 2007 (vedere questo work item). Quale versione di Excel usa il tuo cliente?

+0

dovrò chiedergli spiegazioni. Ho visto che è stato implementato e lo mostra correttamente nella documentazione, ma non ha funzionato per me. Apparentemente un'altra persona che ha pubblicato un oggetto di lavoro ha funzionato, semplicemente non aveva le funzionalità avanzate. Stavo iniziando a pensare, però, che potrei aver cercato di produrre il tipo errato di file Excel. Vado a chiedere al mio cliente se l'utilizzo di Excel 2007 va bene. Il file corrente è il 2003, però, sfortunatamente ... – JaidynReiman

23

Nel caso in cui qualcuno si imbatta in questa domanda. La funzione è stata implementata sia per XLSX che per XLS.

Hai solo bisogno di specificare l'intervallo della riga di intestazione per farlo funzionare:

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

Solo la specifica della riga di intestazione funziona. Grazie! – Oak