PHPExcel generati file di excel non funziona. (Formato del File o estensione non è valida )

PHPExcel generati file di excel non funziona. (Formato del File o estensione non è valida)

Il codice di esempio di PHPExcel exceutes con successo sul mio PC locale, il file viene scaricato locale è aperto in Excel 2007.
Ma usando lo stesso codice sul mio server fornisce un Valido file di excel, e quando APRI E ripristina, poi apre correttamente.

Non voglio utilizzare l’opzione Apri e ripristina, ma solo l’opzione Apri.

Riuscivo a trovare il problema? Si prega di aiuto.

$objPHPExcel->setActiveSheetIndex(0);

//for XLSX
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="item_list.xlsx"');
header('Cache-Control: max-age=0');

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

exit;
Senza conoscere il contenuto esatto del file xlsx, è molto difficile identificare quale dei diversi milioni di possibilità di MS Excel è lamentarsi… quali caratteristiche aggiuntive (come i filtri automatici, grafici, ecc) stai usando? Quale versione di MS Excel? Se si scrive il file sul disco del server piuttosto che un risparmio attraverso il browser, hai ancora lo stesso problema? Non ancora si lamentano se si utilizza il Excel5 Scrittore e salvare come .file xls? È possibile caricare una copia del file per il PHPExcel sito web per le indagini?
Baker : no sul server il file è correttamente generato e quando faccio il download , si apre con successo in excel senza problemi.
Che quasi certamente significa che il tuo script è eco qualcosa in php://stream di output, se spazi iniziali e finali o riga vuota, o un divario tra ?> e <?php da qualche parte nel codice, o un marcatore BOM; quindi aprire il file danneggiato in un editor di testo per verificare come Gordon ha suggerito.
ok sir am riselezionandolo
sir, sto caricando il file excel nel PHPExcel sito web, si prega di controllare. sarebbe di grande aiuto. ci sono solo due colonne e due righe e ho tolto tutti gli spazi.

OriginaleL’autore sqlchild | 2013-05-29

7 Replies
  1. 15

    Il file che hai postato è un singolo carattere di spazio prima della PHPExcel uscita… controlla il tuo script per vedere dove questo potrebbe essere inviate al php://stream di output. Verificare che non c’è spazio prima iniziale <?php tag di apertura; guarda in particolare per ?> <?php o simili apertura e chiusura tag. E anche per controllare i file che potrebbero essere included dal tuo script

    Ho potuto rimuovere quanto più spazi vuoti , ma ancora non ha funzionato , io non riuscivo a trovare il singolo spazio prima dell’uscita , così ho trovato ob_end_clean() su un post su stackoverflow e usato e ha funzionato.
    ob_end_clean() sempre sarà un workround…. da qualche parte, ci sarà uno spazio o una testata DISTINTA base o qualche testo di output che causa questo problema…. la soluzione corretta è sempre quello di identificare in uscita e di eliminarlo

    OriginaleL’autore

  2. 23

    Aggiungere una riga ob_end_clean(); alla fine del tuo programma prima linea $objWriter->save('php://output');

    Il codice simile a:
    //per XLSX

    $objPHPExcel->setActiveSheetIndex(0);
    
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    
    
    header('Content-Disposition: attachment;filename="item_list.xlsx"');
    
    header('Cache-Control: max-age=0');
    
    
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    
    ob_end_clean();
    $objWriter->save('php://output');
    
    
    exit;
    Che ha funzionato per me, grazie per il suggerimento!
    Che ha funzionato per me…
    Grande suggerimento – non certo perché si ha funzionato, ma contento che abbia funzionato!
    grande. Ha lavorato anche per me.

    OriginaleL’autore

  3. 5

    Verificare eventuali spurie caratteri eco nel file da aprire in un editor di testo. Se ci sono, probabilmente si può capire dove sono stati introdotti. Spazi o interruzioni di riga sono evidenti colpevoli.

    Inoltre, assicurarsi che non ci siano spazi o a capo, prima che il <?php tag o in seguito a una ?> tag dei tuoi file.

    Il xlsx formato è in realtà una zip collezione di xml file, quindi se non ci sono evidenti le stringhe di testo (di fianco alla PK firma) visibile in un editor di testo, quindi provare a decomprimere. Che può dare altri indizi per il problema.

    Se è in esecuzione su una piattaforma Windows, poi ci sono state alcune versioni difettose di ZipArchive php_zip.dll libreria di collegamento che possono causare questo errore. È possibile utilizzare PCLZip come alternativa alla ZipArchive.

    ho inviato il mio file di excel , si prega di dare un’occhiata a esso , non sono ancora riuscito a risolvere il problema 🙁
    L’idea di aprire con un editor di file di testo che mi ha aiutato molto. Ho trovato schede extra all’inizio del file di excel danneggiati.

    OriginaleL’autore

  4. 4

    È application/vnd.ms-excel

    E NON

    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

    ESEMPIO PER XLS:

    $objPHPExcel = new PHPExcel();
    
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="item_list.xlsx"');
    header('Cache-Control: max-age=0');
    $objWriter->save('php://output');

    ESEMPIO PER XLSX:

    $objPHPExcel = new PHPExcel();
    
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
    header('Content-Type: application/vnd.ms-excel');
    header('Content-Disposition: attachment;filename="item_list.xlsx"');
    header('Cache-Control: max-age=0');
    $objWriter->save('php://output');
    per saperne di @sqlchild IL FORMATO È application/vnd.ms-excel

    OriginaleL’autore

  5. 1

    Scrittura di un file di Excel non è semplicemente una questione di dare un numero arbitrario di file con una estensione xlsx o xls.

    È possibile scrivere un BIFF5 o BIFF8 file xls (tutte le versioni di Excel post 95 leggere questo), o c’è Excel 2003 formato XML, che può essere aperto con Excel 2003 e Excel2007 (e Excel 2010).

    Per maggiori dettagli ed esempio a che fare con excel 2007 è possibile consultare il PHPExcel esempi pagina.

    Fammi sapere se posso aiutarti di più.

    OriginaleL’autore

  6. 0

    Ho affrontato il problema e trovato c’era un carattere di nuova riga, che era venuta dall’inizio di dati desiderato e fu causa di questo errore. Più tardi ho scoperto che avevo un file php che aveva il tag di chiusura

    "?>" 

    Di solito è consigliabile che si dovrebbe evitare l’uso di chiusura del tag php come si va anche al buffer di output. Utilizzando ob_end_clean() è anche una buona opzione.

    Ulteriori dettagli possono essere trovati Perché si dovrebbe omettere il tag di chiusura?

    OriginaleL’autore

Lascia un commento