Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Export php to excel

  1. #1

    Export php to excel

    Raga urge aiuto.
    Ho questo codice per l'esportazione in excel, funziona benissimo in locale (ambiente Win) su server Linux non mi viene fuori nulla
    immagino che il problema sia la codifica dell'header qualcuno può aiutarmi ?

    codice:
    $result=mysql_query($query2) or die("Query fallita".mysql_error()." ".$query2);
    
    
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");;
    header("Content-Disposition: attachment;filename=Clienti_top_int.xls ");
    header("Content-Transfer-Encoding: binary ");
    
    xlsBOF();
    
    // xlsWriteLabel(0,0,"ELENCO CLIENTI TOP INT.LI"); // SERVE PER INSERIRE UN TITOLO DI TESTA NEL FOGLIO
    
    // Make column labels.
    xlsWriteLabel(0,0,"N_POS");
    xlsWriteLabel(0,1,"CLIENTE");
    xlsWriteLabel(0,2,"GRUPPO CLIENTE");
    xlsWriteLabel(0,3,"COD CLIENTE");
    xlsWriteLabel(0,4,"CLUSTER");
    xlsWriteLabel(0,5,"LOCALITA'");
    //Per partire dal primo record mettere $xlsRow = 1;
    $xlsRow = 1;
    
    // genera il ciclo dei campi della tabella MySQL.
    while($row=mysql_fetch_array($result)){	
    							
    
    xlsWriteNumber($xlsRow,0,$row['N_POS']);
    xlsWriteLabel($xlsRow,1,$row['RAG_SOCIALE']);
    xlsWriteLabel($xlsRow,2,$row['DESCR_GRUPPO']);
    xlsWriteLabel($xlsRow,3,$row['COD_CLIENTE']);
    xlsWriteLabel($xlsRow,4,$row['CLUSTER_TOP']);
    xlsWriteLabel($xlsRow,5,$row['LOCALITA']);
    $xlsRow++;
    }
    xlsEOF();
    exit();

    Denghiu



    .

  2. #2

    Re: Export php to excel

    Originariamente inviato da newbobotime

    immagino che il problema sia la codifica dell'header qualcuno può aiutarmi ?

    .
    Immagino che non hai installato microsoft excel su linux....
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    @mtx_maurizio, a quanto pare lui usa un set di funzioni che scrivono direttamente il format biff5, la piattaforma non ha importanza. Il problema e' che quelle 4 funzioni sono la versione per i poveri, non tengono conto dell'endianness, etc. Tanto vale la pena di esportare in csv.


    @newbobotime, definisci "non mi viene fuori nulla". Se non ti viene il file excel, posta le funzioni.
    Se vedi una pagina bianca, e non ti fa scaricare il file, nei logs, ci deve essere qualche errore. Se non c'e', attiva l'error reporting.

  4. #4
    Sono un proprio un p... !

    Mi ero dimenticato di upgradare il file delle funzioni.php dove dentro c'era questo

    codice:
    function xlsBOF() {
    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
    return;
    }
    function xlsEOF() {
    echo pack("ss", 0x0A, 0x00);
    return;
    }
    function xlsWriteNumber($Row, $Col, $Value) {
    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    echo pack("d", $Value);
    return;
    }
    function xlsWriteLabel($Row, $Col, $Value ) {
    $L = strlen($Value);
    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    echo $Value;
    return;
    }

  5. #5
    adesso mi è venuta fuori una cosa strana.

    Ho replicare tutta la root e il db per crearmi un ambiente di test, mentre ovvviamente gli utenti utilizzano l'ambiente effettivo (tutto identico)
    tutto risiede sul medesimo server, da una parte l'export è ok, dall'altra mi apre l'excel con i soliti carratteri strani, quindi non si capisce nulla.

    Mi spiegate cosa è successo ?
    Mi viene un dubbio sul mysql, visto che mi hanno creato un altro db, è possibile che hanno cambiato la codifica del set dei caratteri ?

    quindi non è più impostati a UTF-8 Unicode (utf8) ?


    10ks

  6. #6
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Ma non puoi guardare tu stesso se e' diverso il charset?

  7. #7
    Si hai ragione,
    e che mi è venuto solo in mente adesso, posso andare sul server solo lunedì dall'ufficio, ho provato a chiedere solo qualche conferma.

    grazie cmq, ci provo lunedi e faccio sapere

    10ks

  8. #8
    Ho verificato, il charset è lo stesso è tutto identico

  9. #9
    Ragazzi riprendo questa discussione, perchè ci stò lavorando nuovamente da qualche ora e non riesco a venirne a capo.
    faccio un breve riepilogo:

    Ho caricato sullo stesso server (virtuale) 2 ambienti speculari, uno di test e l'altro di produzione, assolutamente identici come codice PHP con 2 db MySQL dedicati.

    Ho verificato con PHPMyAdmin il Set di caratteri MySQL: che per tutti è UTF-8 Unicode (utf8)

    se lancio l'esportazione dall'ambiente di test funziona, da quello di produzione no !!

    A questo punto proprio non ci capisco più nulla !!!

    Mi aiutate per favore !



    Il codice

    Codice PHP:

    //Questa è la funzione for export to excel
    function xlsBOF() {
    echo 
    pack("ssssss"0x8090x80x00x100x00x0);
    return;
    }
    function 
    xlsEOF() {
    echo 
    pack("ss"0x0A0x00);
    return;
    }
    function 
    xlsWriteNumber($Row$Col$Value) {
    echo 
    pack("sssss"0x20314$Row$Col0x0);
    echo 
    pack("d"$Value);
    return;
    }
    function 
    xlsWriteLabel($Row$Col$Value ) {
    $L strlen($Value);
    echo 
    pack("ssssss"0x204$L$Row$Col0x0$L);
    echo 
    $Value;
    return;
    }
    //fine funzione 


    // questa è la pagina php con la query al db

    $result=mysql_query($query2) or die("Query fallita".mysql_error()." ".$query2);


    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");;
    header("Content-Disposition: attachment;filename=Clienti_top_int.xls ");
    header("Content-Transfer-Encoding: binary ");

    xlsBOF();

    // xlsWriteLabel(0,0,"ELENCO CLIENTI TOP INT.LI"); // SERVE PER INSERIRE UN TITOLO DI TESTA NEL FOGLIO

    // Make column labels.
    xlsWriteLabel(0,0,"N_POS");
    xlsWriteLabel(0,1,"CLIENTE");
    xlsWriteLabel(0,2,"GRUPPO CLIENTE");
    xlsWriteLabel(0,3,"COD CLIENTE");
    xlsWriteLabel(0,4,"CLUSTER");
    xlsWriteLabel(0,5,"LOCALITA'");
    //Per partire dal primo record mettere $xlsRow = 1;
    $xlsRow 1;

    // genera il ciclo dei campi della tabella MySQL.
    while($row=mysql_fetch_array($result)){    
                                

    xlsWriteNumber($xlsRow,0,$row['N_POS']);
    xlsWriteLabel($xlsRow,1,$row['RAG_SOCIALE']);
    xlsWriteLabel($xlsRow,2,$row['DESCR_GRUPPO']);
    xlsWriteLabel($xlsRow,3,$row['COD_CLIENTE']);
    xlsWriteLabel($xlsRow,4,$row['CLUSTER_TOP']);
    xlsWriteLabel($xlsRow,5,$row['LOCALITA']);
    $xlsRow++;
    }
    xlsEOF();
    exit(); 
    Questo è il risultato

    PANTEC {
    PANTEC {
    CORONA€
    CORONA€
    SAN GILLIO‡p˜@‡ ‡rr‡2A SPA‡2A SPA‡
    SIMPRO –
    SPRO SPA–
    NEW ELFIN 
    NEW ELFIN





    .

  10. #10
    Nessuno ??







    .

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.