Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    problema in campi excel dopo esportazione da php

    Ciao ragazzi! Ho trovato uno script sul web per esportare i dati da una tabella mysql in un file di excel e non pensavo fosse così semplice. Poi (e ti pareva) ho trovato un problema nei campi del file excel dove vengono inseriti dei testi numerici, ad esempio:

    il numero di telefono fisso viene visualizzato nel campo del file excel senza lo zero davanti, tipo 089123456 viene visualizzato 89123456

    la partita iva viene addirittura visalizzata in questo modo: il numero 0991122554343 va a diventare 9,91123E+11 e l'iban che ha tanti numeri diventa 1,00113E+15

    cliccando due volte sul campo viene visualizzato il numero per esteso ma lo zero non esiste più davanti al numero.

    Qualcuno si è già ritrovato lo stesso problema? C'è un modo per introdurre e lasciare che excel visualizza i campi così come sono nella tabella mysql? Purtroppo è un lavoro quindi l'esportazione dev'essere fatta correttamente. Se serve incollo il codice php anche se non credo che vi siano errori. Ciao grazie

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    imposta i campi come se fosse del testo, ma devi farlo quando generi il file excel...
    una soluzione è anche quella di anteporre un apice singolo prima del campo numerico che deve diventare testo

  3. #3
    ti incollo il codice perchè non vedo cosa dovrei fare diversamente ok? può darsi che tu riesci meglio. Eccolo:

    Codice PHP:
    <?php
    include "../server.php"// includo il file di connessione al Db

    $filename="collaboratori.xls"// nome del file che creeremo

    header ("Content-Type: application/vnd.ms-excel"); // specifichiamo il Content-Type
    header ("Content-Disposition: inline; filename=$filename"); // specifichiamo la risorsa

    ?>

    <!-- iniziamo a costruire la nostra tabella --/>

    <html><head><title>Export</title></head><body>

    <table border="1">
    <tr>

    <th>Nome</th>
    <th>Cognome</th>
    <th>Sesso</th>
    <th>Indirizzo1</th>
    <th>Indirizzo2</th>
    <th>Comune</th>
    <th>Provincia</th>
    <th>Cap</th>
    <th>Telefono principale</th>
    <th>Telefono ufficio</th>
    <th>Cellulare</th>
    <th>Fax</th>
    <th>Email</th>
    <th>Sito Web</th>
    <th>Codice Fiscale</th>
    <th>Partita iva</th>
    <th>Banca</th>
    <th>Comune</th>
    <th>Provincia</th>
    <th>Agenzia</th>
    <th>Cab</th>
    <th>Abi</th>
    <th>Numero CC</th>
    <th>Iban</th>
    <th>Ritenuta d'acconto</th>
    <th>Estratto contro</th>
    <th>Note</th>
    <th>Data Inserimento</th>
    </tr>

    <?php

    usock
    ();

    $sql="SELECT * FROM collaboratori ORDER BY nome"// selezioniamo i dati dalla nostra tabella
    $query=@mysql_query($sql) or die (mysql_error());

    while (
    $row=mysql_fetch_array($query)) // ed effettuiamo un ciclo per creare le righe della nostra tabella
    {

          
    $nome         =      $row['nome'];
          
    $cognome      =      $row['cognome'];
          
    $sesso        =      $row['sesso'];
          
    $indirizzo1   =      $row['indirizzo1'];
          
    $indirizzo2   =      $row['indirizzo2'];
          
    $comune       =      $row['comune'];
          
    $provincia    =      $row['provincia'];
          
    $cap          =      $row['cap'];
          
    $telefonop    =      $row['telefonop'];
          
    $telefonou    =      $row['telefonou'];
          
    $cellulare    =      $row['cellulare'];
          
    $fax          =      $row['fax'];
          
    $email        =      $row['email'];
          
    $sitow        =      $row['sitow'];
          
    $codicef      =      $row['codicef'];
          
    $partiva      =      $row['partiva'];
          
    $banca        =      $row['banca'];
          
    $comune2      =      $row['comune2'];
          
    $provincia2   =      $row['provincia2'];
          
    $agenzia      =      $row['agenzia'];
          
    $cab          =      $row['cab'];
          
    $abi          =      $row['abi'];
          
    $numerocc     =      $row['numerocc'];
          
    $iban         =      $row['iban'];
          
    $ritacconto   =      $row['ritacconto'];
          
    $estrattoconto=      $row['estrattoconto'];
          
    $note         =      $row['note'];
          
    $myDatacomm   =      $row['data'];
          
    $inserito     =      date("d/m/Y"strtotime($myDatacomm));
    ?>

    <tr>
    <td><? echo $nome?></td>
    <td><? echo $cognome?></td>
    <td><? echo $sesso?></td>
    <td><? echo $indirizzo1?></td>
    <td><? echo $indirizzo2?></td>
    <td><? echo $comune?></td>
    <td><? echo $provincia?></td>
    <td><? echo $cap?></td>
    <td><? echo $telefonop?></td>
    <td><? echo $telefonou?></td>
    <td><? echo $cellulare?></td>
    <td><? echo $fax?></td>
    <td><? echo $email?></td>
    <td><? echo $sitow?></td>
    <td><? echo $codicef?></td>
    <td><? echo $partiva?></td>
    <td><? echo $banca?></td>
    <td><? echo $comune2?></td>
    <td><? echo $provincia2?></td>
    <td><? echo $agenzia?></td>
    <td><? echo $cab?></td>
    <td><? echo $abi?></td>
    <td><? echo $numerocc?></td>
    <td><? echo $iban?></td>
    <td><? echo $ritacconto?></td>
    <td><? echo $estrattoconto?></td>
    <td><? echo $note?></td>
    <td><? echo $inserito?></td>
    </tr>

    <?php
    }
    ?>

    </table>
    </body>
    </html>

    <?php
    @mysql_close($connessione);
    ?>
    Così può essere utile anche a chi ne ha bisogno.

    Fammi sapere in che modo modificarlo!

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    ad esempio, prendiamo la partita IVA, che è un dato numerico che ha però una forma di testo (perché può essere preceduta da uno zero)
    facciamo in modo che excel lo consideri un testo
    Codice PHP:
    <td><? echo "'" $partiva?></td> 
    // tra gli apici doppi c'è un apice singolo
    prova, dovrebbe andare
    se funziona replicalo sugli altri campi (ad esempio, numero di telefono, numeri di grandezza superiore alle 15 cifre che excel non mostra interi)

  5. #5
    si così funziona, ovviamente c'è anche l'apice nel campo excel, però almeno risulta il numero completo, non è possibile visualizzare il numero completo senza l'apice vero? Anche se non è un grosso problema ma è giusto per sapere. Ad ogni modo ti ringrazio

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    l'apice nel campo excel lo vedi solo nella barra della formula quando selezioni la cella?
    se è così, non ti preoccupare: anche se usi una funzione di ricerca (tipo CERCA.VERT) l'apice non viene considerato

    altri modi non me ne vengono in mente

  7. #7
    no appare proprio nel campo subito prima del primo numero, come parte del campo

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    eh già...
    lo ho provato con LibreOffice e l'apice non si vede...
    Con Excel 2007 si... Ma basta dare un F2 sulla cella, premere invio e sparisce

    La fregatura è che le funzioni di ricerca non funzionano correttamente e nemmeno salvando come xls nativo elimina automaticamente gli apici "in più"...

  9. #9
    più che altro se devi creare il link esporta per un database destinato a un cliente, non metterai mano sui file excel, per questo preferivo che non ci fossero gli apici, però vabè pazienza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.