2009-05-15 21 views
5

Ho cercato una buona classe di generazione di file Excel e devo ancora trovarne una: il mio problema numero uno è che sebbene possa ottenere il file esportato da aprire in Excel (in esecuzione 2007), ricevo sempre un avvertimento che dice "il file è in un formato diverso all'estensione del file".PHP Microsoft Excel generazione di file/classe di esportazione

Ho notato che l'esportazione di Excel in phpMyAdmin genera anche il messaggio di avvertimento sopra menzionato.

Quale codice utilizzano gli altri utenti per questo requisito comune?

Aggiornamento rapido Se si imposta l'estensione del file del file Excel generato come xml si apre nel browser (anche se sto inviando le intestazioni corrette), ma se si sceglie di salvare il file xml e quindi aprire da Excel, funziona senza alcun avviso! Sfortunatamente, questo è più fastidio per gli utenti che semplicemente cliccando 'Procedi comunque' con l'avviso che sto ottenendo. Altre idee?

risposta

2

Ho scoperto che aggiungendo la seguente, sotto la dichiarazione XML nel mio file Excel generato, assicura Excel apre il file con l'estensione di file XML (piuttosto che il browser web):

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

Sono anche impostando le seguenti intestazioni in 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

Usa Spreadsheet_Excel_Writer dal PEAR

o

scrivere il file CSV format.
Ma utilizzare Microsoft Eccelle comprensione del csv: Un punto e virgola (;) come separatore

+0

ho preso uno sguardo al pacchetto PEAR, sembra che molto di più lavori di realizzazione - più io non sono sicuro che si risolverà il mio problema , che sembra avere effetto solo su Excel 2007. – BrynJ

+0

Non usare il pacchetto PEAR, è obsoleto! È stato in beta dal 2006. Usa invece PHPExcel !!! – markus

0

il file è in un formato diverso che l'estensione del file

Hai provato di salvare il file con un altro file estensione? Come "foo.xlsx" invece di "foo.xls".

+0

Ho, sì - xls, xlsx e xml - tutto con lo stesso risultato. Immagino che sia in qualche modo malformato, ma non sono sicuro di cosa esattamente. – BrynJ

+0

Ok, solo per aggiungere a quanto sopra - in realtà, se imposto l'estensione del file come xml si apre nel browser (anche se sto inviando le intestazioni corrette).Se scelgo di salvare il file xml e poi lo apro da Excel, funziona senza alcun avviso! Sfortunatamente, questo è più fastidio per gli utenti che semplicemente cliccando 'Procedi comunque' con l'avviso che sto ottenendo. – BrynJ

2

È anche disabilitare la dialogbox, utilizzando regedit

[HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Excel\Security] 
“ExtensionHardening”=dword:00000000 
  • Start -> Esegui -> regedit
  • Vai a "HKEY_CURRENT_USER \ SOFTWARE Microsoft \ Office \ \ 12.0 \ EXCEL \ SECURITY"
  • nuova DWORD
  • Tipo “ExtensionHardening”, come il nome e 0 come valore
+0

Interessante, ma non proprio una soluzione praticabile per un'applicazione con il web anche se +1. –

+0

+1 - Potrei essere in grado di usarlo effettivamente, dato che sto fornendo questa funzionalità nell'area di amministrazione della mia app Web, quindi gli utenti sono limitati (è un'app personalizzata). – BrynJ

8
+0

Grazie per il collegamento: sembra una classe molto completa, ad essere sinceri è decisamente superiore alle mie esigenze. – BrynJ

+1

Non dovresti aver paura delle dimensioni quando la qualità è buona. Molto meglio dell'utilizzo della classe PEAR obsoleta. – markus

Problemi correlati