2011-02-09 20 views
5

Sto usando Cake; come ho aperto il file excel nel browser con una funzione di generare:PHPExcel in CakePHP: errore - file excel incompatibile o danneggiato

sto ottenendo questo errore da Microsoft Excel:

Excel non può aprire la 'lista .xlsx Gruppi' file perché il file il formato o l'estensione del file non è valido. Verificare che il file non sia danneggiato e che l'estensione del file corrisponda al formato del file .

Ho provato a rimuovere gli spazi nel nome file dopo averlo scaricato dal browser e l'ho riaperto, mostra lo stesso errore di sopra. Qualcuno ha provato questo e l'ha risolto? o qualche indizio su cosa sta succedendo?

Fondamentalmente il file excel è aperto ma vuoto a causa dell'errore sopra riportato. Ho letto un problema simile che dice di rimuovere lo spazio alla fine del tag ?> in uno dei file del componente. Ma non so quale file del componente ..?

P.S. Sto usando Microsoft Excel 2010, potrebbe essere questa la ragione? PHPExcel al momento funziona per un "Microsoft Excel 2010"?

risposta

2

Il writer PHPExcel Excel2007 deve generare file xlsx validi che possono essere letti da Excel 2007, Excel 2010 e da Excel 2003 con il pacchetto di compatibilità. Realmente faccio la maggior parte dei miei test con Excel2010 ed Excel2003.

La prima cosa da verificare è se nel file vengono visualizzati dei caratteri spuri, aprendolo in un editor di testo. Se ci sono, allora quei testi possono essere una guida per individuare il problema. In particolare, fai attenzione agli spazi o alle interruzioni di riga come primi caratteri nel file.

Un file xlsx è una raccolta zip di file XML, quindi se non ci sono stringhe di testo evidenti (accanto alla firma PK) visibile in un editor di testo, quindi provare decompresso (utilizzando qualsiasi unzipper è appropriato per la piattaforma operativa) . Ciò potrebbe dare altri messaggi di errore che potrebbero aiutare a diagnosticare il problema.

Se si esegue su una piattaforma Windows, quindi ci sono state alcune versioni buggy dell'estensione ZipArchive (php_zip.dll) che può causare questo errore. L'ultimo codice SVN consente di utilizzare PCLZip come alternativa a ZipArchive.

Se i problemi persistono ancora, prova a postare nei forum di discussione di PHPExcel con tutti i dettagli.

1

Impostare il layout vuota con intestazioni appropriate per la creazione/scaricare il file di Excel

Ecco esempio con file PDF

<?php 
header("Content-type: application/pdf"); 
echo $content_for_layout; 
?> 
0

Hai provato questo?

<?php 
$file="test.xls"; 
$test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>"; 
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$file"); 
echo $test; 
?> 

Grazie

0

forzo miei utenti per scaricare le schede di Excel utilizzando il seguente codice nel mio Controller (io uso PHPExcel per generare report sulle mie applicazioni CakePHP):

header('Content-Type: application/vnd.ms-excel'); 
header('Content-Disposition: attachment;filename="'.'myreportname.xls"'); 
header('Cache-Control: max-age=0'); 

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
$objWriter->save('php://output'); 

$this->render(false); 
  • $ objPHPExcel | Questo è il mio foglio, un oggetto PHPExcel()

  • $ this-> render (false); | Per evitare di inviare qualsiasi cosa al browser client, accertarsi di non avvitare il file Excel

Problemi correlati