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

    contare le colonne di un file di testo separato da tabulazione

    Ciao a tutti!

    Ho un problema: devo creare una tabella a partire da un file di testo creato con excel e salvato come testo delimitato da tabulazione. Il problema è che le colonne sono in numero variabile, e soprattutto il n° di celle della prima riga è inferiore al numero di celle della seconda e successive, per cui dovrei mettere degli colspan.. Come è possibile fare tutto ciò in automatico?

    Mi hanno suggerito di contare le colonne di cui è composto il file prima di pubblicare l'header della tabella e di inserire un indice di colonna nel file che specifichi come raggruppare le colonne, ma non ho proprio idea di come fare :master: .... Suggerimenti??

  2. #2
    avevo fatto qualcosa tempo fa, avevo messo un terminatore di campo ed uno di riga, quindi eseguivo l'explode prima della riga e poi dei campi. Ovviamente se un campo era vuoto conteneva pero sempre il suo bel separatore.

    In solido... se i campi erano tutti compilati .. tutto OK, altrimenti ci infilavo uno spazio "&nbsp ;" e nessun colspan tanto difficile da gestire se le colonne possono o non possono esserci, quanto inutile.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    mmm no.. non è quello che intendo... io ho bisogno del colspan perchè la prima riga ha delle celle che devono obbligatoriamente inglobare delle celle sottostanti...

    Allora faccio uno schemino

    :_______:________:____1a gara____:________2a gara________: .....
    :_Class._:__Pilota__:_01/04_:_02/04_:_01/05_:_02/05_:_03/05_: .....
    :___1___:_M.Rossi_:___15__:___1___:___6___:___8__: __12___: .....
    ....

    Come vedete è necessario che la cella "1a gara" abbia un colspan=2 e che la cella "2a gara" abbia un colspan=3..

    Mi hanno suggerito questa soluzione:

    Devi passare la stringa che acquisisci tramite readline alla funzione explode ("\t",stringaesatta) che ti restituisce un array, a questo punto scorri l'array utilizzando una variabile che conta le ripetizioni ed una che mantiene memoria della stringa precedente, a questo punto quando la stringa varia scrivi il colspan con il numero di ripetizioni contato ed azzeri il contatore.

    Io non ci ho capito niente... Qualcuno mi può aiutare??

  4. #4
    quella che necessita del colspan si chiama "intestazione" della tabella e solitamente si organizza a se stante. Se invece vuoi creare un qualcosa di dinamico anche nell'intestazione ... mi sa che cerchi grane. Quello che voglio dire e' che i dati cambiano ma l'intestazione della tabella e' sempre la stessa. Altrimenti creati un layout per ogni tipo di tabella usata che poi richiamerai secondo il bisogno.


    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    infatti lo scopo era fare l'intestazione dinamica... vabbè se non siete in grado di farla neanche voi allora dovrò per forza creare un layout diverso per ogni file di testo...

  6. #6
    Originariamente inviato da elysaweb
    infatti lo scopo era fare l'intestazione dinamica... vabbè se non siete in grado di farla neanche voi allora dovrò per forza creare un layout diverso per ogni file di testo...
    Non siamo in grado di creare il "tuo" di layout.... visto le info sul progetto. Apri una commessa e vedremo di risolvere il problema....

    Non si tratta solo di dire come fare. Quello te lo hanno gia' detto anche se non tiene conto di troppe variabili. Si tratta di realizzarlo. e questo e' un altro paio di mutande. Il sistema piu' semplice e' quello di creare una serie di layout per ogni tipologia di tabella. Analizzi il tipo e richiami il layout opportuno. Questo ti permette tutta l'elasticita' che ti serve, modificare dove e' necessario senza dover riscrivere tutto il codice.... Diciamo che dire che non siamo in grado neanche noi e' una infelice espressione ...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    Utente di HTML.it L'avatar di *pragma
    Registrato dal
    Sep 2001
    Messaggi
    1,087

    Re: contare le colonne di un file di testo separato da tabulazione

    Originariamente inviato da elysaweb
    Ciao a tutti!

    Ho un problema: devo creare una tabella a partire da un file di testo creato con excel e salvato come testo delimitato da tabulazione. Il problema è che le colonne sono in numero variabile, e soprattutto il n° di celle della prima riga è inferiore al numero di celle della seconda e successive, per cui dovrei mettere degli colspan.. Come è possibile fare tutto ciò in automatico?
    .. ecc....
    Se ho capito bene il tuo problema ....
    a questo indirizzo
    http://www.tecnichenuove.com/epages/.../88-481-1951-4
    c'è il libro da dove ho copiato i codici:
    http://www.tecnichenuove.com/WebRoot...D/phphacks.zip
    crei una pagina index.php
    codice:
    <html>
    <body>
      <form enctype="multipart/form-data" action="import.php" method="post">
        Excel XML file:
            <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
        <input type="file" name="file" />
    
        <input type="submit" value="Upload" />
      </form>
    </body>
    </html>
    come vedi in essa c'è una FORM che invia i dati alla pagina import.php
    Ecco il codice di import.php
    codice:
    <html>
    <body>
    <?php
      $data = array();
           if($_FILES['file']['tmp_name'])  {
              $dom = DOMdocument::load( $_FILES['file']['tmp_name'] );
              $rows = $dom->getElementsByTagName('Row');
                     foreach($rows as $row) {
              $cells = $row->getElementsByTagName('Cell');
              $datarow = array();
                         foreach($cells as $cell) {
              $datarow[] = $cell->nodeValue;
              }
              $data[] = $datarow;
             }
            }
    ?>
    <table>
    <?php
                     foreach($data as $row) {
    ?>
     <tr>  
    <?php
                     foreach($row as $item) {
    ?>
       <td><?php echo $item; ?></td>
    <?php } ?>
     </tr>
    <?php } ?>
    </table>
    
    </body>
    </html>
    Le piazzi nel tuo server Web nella stessa cartella (basta osservare la action della form).

    Salvi il foglio excel (dove hai le tue tabelle) in formato xml
    Se l'office è dal 2003 o successivo dovrebbe funzionare bene. Altrimenti scarichi openOffice
    dalla versione 2.x in poi (http://it.openoffice.org/download/).

    Imposti che il "calc" dell'open ti legga il foglio excel (o lo copi ed incolli) e lo salvi in xml sul tuo server Web.

    Dalla form carichi il file.xml , spedisci all'import, e ti visualizza la tabella importata.
    se ne vale la pena questo 3D può essere evidenziato.

    ciao

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.