Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173

    Errore quando si esporta file excel

    Salve,
    Ho un problema quando vado ad esportare un lista di email massiccia (pi� di 3000 email).
    Codice PHP:

    <?php 
        
    include("config.php");    
        
    sql mysql_query("SELECT nominativo,mail FROM clienti WHERE mail != '' ORDER BY mail ASC");

        if(
    mysql_num_rows($sql) > 0){ 
                 
    $output1 '            
                  <table border="1">                
                   <tr>                    
                    <th bgcolor="#bfbfbf">Nominativo</th>                    
                    <th bgcolor="#bfbfbf">Email</th>                
                  </tr>'
    ;                

                 echo 
    $output1;                
                 while(
    $row mysql_fetch_array($sql)){            
                 
    $output2 ='            
                             <tr>                
                             <td>'
    .$row["nominativo"].'</td> 
                             <td>'
    .$row["mail"].'</td>    
                             </tr>            
                              '
    ;                        

                echo 
    $output2;        
                }                
             
                 
    $output3 '</table>';                

                
    header("Content-Type: application/xls");        
                
    header("Content-Disposition: attachment; filename=lista-email.xls");                
                echo 
    $output3;    
              }

    ?>
    Mi stampa correttamente la lista delle email, ma non mi esporta il file in *.xls e mi visualizza due errori che sono:
    Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\clienti\esporta_email.php:25) in C:\xampp\htdocs\clienti\esporta_email.php on line 30

    Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\clienti\esporta_email.php:25) in C:\xampp\htdocs\clienti\esporta_email.php on line 31

    Come posso risolvere?
    Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    il problema è che stampi a schermo i dati e poi cerchi di modificare gli header
    o eviti di stampare a schermo i dati o salvi il file xls sul server e poi lo recuperi con un'azione dell'utente (ad esempio, link a fine pagina verso il file)

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173
    E come evito di stampare i dati?

  4. #4
    Cancellando le righe
    codice:
     echo $output1; 
    e
    codice:
     echo $output2; 
    Permettimi una critica al tuo codice:
    Quello che tu stai generando con il tuo codice non è un file excel. Generi file che contiene codice html per generare una tabella contenente i dati. Poi excel cercherà di interpretare il tuo file e dargli una forma di un vero file excel.
    Nella pratica se poi devi elaborare con excel questi dati, per esperienza, posso dirti che il tuo è un metodo sconsigliato. Si genera un casino dovuto al fatto che il file non è veramente un file excel.
    Le strade più ortodosse sono due:
    - generi un vero file excel usando la libreria PHPexcel
    - generi un (comodissimo, perchè nativo in php, volendo anche in mysql) file csv che poi excel importerà generando un corretto file excel.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    173
    Ho provato a fare come dici tu e:
    -se lo esporto in un file csv mi stampa all'interno delle celle excel il codice html della pagina
    -se non stampo le variabili $output mi genera un foglio excel vuoto


  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Codice PHP:
    $fp fopen("lista-email.xls");
    while(
    $row mysql_fetch_array($sql)) {
        
    fputcsv($fp$row";"'"');}
    fclose($fp); 

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.