Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    importare file da .CSV.. formato?

    ciao, io creo dei file .csv, esportando i dati che ho sul database..


    quando devo andare a capo nel file csv, per fare una nuova riga, io faccio così:

    Codice PHP:
    $myfile 'primaRiga;#COL#;dato1;#COL#;dato2;#COL#;dato3;#ROW#
    '
    ;
    $myfile 'secondaRiga;#COL#;dato1;#COL#;dato2;#COL#;dato3;#ROW#
    '

    e funziona anche.. il problema è che quando reimporto il file (tramite un mio script, non phpmyadmin), nella prima colonna, mi prende dentro (insieme al dato) anche un carattere 'invisibile', tipo uno spazio bianco.. credo che sia appunto quel 'a capo'..
    ora, c'e un modo per rimuoverlo, o sbaglio nella creazione del file?
    devo usare una carattere speciale per 'segnalare' al nuova riga quando creo il file excel?!

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: importare file da .CSV.. formato?

    Prova cosi:

    [code]
    Codice PHP:
    $myfile 'primaRiga;#COL#;dato1;#COL#;dato2;#COL#;dato3;#ROW#'."\n";
    $myfile 'secondaRiga;#COL#;dato1;#COL#;dato2;#COL#;dato3;#ROW#."\n"; 
    p.s.

    cos'è quel #COL# che si ripete?

  3. #3
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    Re: Re: importare file da .CSV.. formato?

    Originariamente inviato da gianiaz
    Prova cosi:

    [code]
    Codice PHP:
    $myfile 'primaRiga;#COL#;dato1;#COL#;dato2;#COL#;dato3;#ROW#'."\n";
    $myfile 'secondaRiga;#COL#;dato1;#COL#;dato2;#COL#;dato3;#ROW#."\n"; 
    p.s.

    cos'è quel #COL# che si ripete?
    bhè. il formato csv utilizza il ; per delimitare le celle..
    io devo esportare dei listini, metti che uno mi mette nella descrizione di un oggetto il ;.. mi strazia tutto

    invece così, quando riprendo dentro il file, utilizzo i #ROW# e #COL# per capire esattamente dove finisce la riga e la colonna


    (incrociando le dita che nessuno scriva mai #COL# o #ROW# nella descrizione di un oggetto.. non posso usare stringhe troppo lunghe o il peso del file cresce in maniera esponenziale )

    cmq ora provo, grazie!

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: Re: Re: importare file da .CSV.. formato?

    Originariamente inviato da thitan
    bhè. il formato csv utilizza il ; per delimitare le celle..
    io devo esportare dei listini, metti che uno mi mette nella descrizione di un oggetto il ;.. mi strazia tutto

    invece così, quando riprendo dentro il file, utilizzo i #ROW# e #COL# per capire esattamente dove finisce la riga e la colonna


    (incrociando le dita che nessuno scriva mai #COL# o #ROW# nella descrizione di un oggetto.. non posso usare stringhe troppo lunghe o il peso del file cresce in maniera esponenziale )

    cmq ora provo, grazie!
    ATTENTO HO EDITATO PERCHE' AVEVO SCRITTO UNA COSA ERRATA.

    Il file csv usa anche gli apici per delimitare le stringhe, e tu puoi fare una specie di escape per gli eventuali apici inseriti dall'utente.

    Ho fatto una prova con openoffice, e se tu hai questo testo:

    codice:
    TEST'
    E usi l'apice singolo come delimitatore della stringa il file csv generato conterrà:

    codice:
    'TEST'''
    (in pratica 1 apice singolo di apertura, uno di chiusura, e uno aggiuntivo per ogni apice singolo che c'è nella stringa da esportare.


    Per cui puoi fare cosi:

    codice:
    $delimitatore_testo = "'";
    $delimitatore_campo = ";";
    $delimitatore_riga = "\n";
    
    $valore1 = str_replace($delimitatore_campo, $delimitatore_campo.$delimitatore_campo, $valore1);
    $valore2 = str_replace($delimitatore_campo, $delimitatore_campo.$delimitatore_campo, $valore2);
    
    $riga = $delimitatore_testo.$valore1.$delimitatore_testo.$delimitatore_campo.$delimitatore_testo.$valore1.$delimitatore_testo.$delimitatore_riga;
    ciao

  5. #5
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716

    Re: Re: Re: Re: importare file da .CSV.. formato?

    Originariamente inviato da gianiaz
    Il file csv usa anche gli apici doppi per delimitare le stringhe, e tu puoi usare addslashes per fare l'escape degli eventuali apici, cosi non sbagli.

    Del tipo

    codice:
    $string_delim = '"';
    $field_delim = ";";
    $row_delim = "\n";
    
    $riga = $string_delim.addslashes($campo1).$string_delim.$field_delim.$string_delim.addslashes($campo1).$string_delim.$field_delim.$row_delim; .=
    ciao
    ah.. eh, provo anche quello.. però mi era comoda la soliuzione del #COL# perchè risultava più facile al cliente compilare il file.. vabbhè cmq,

    ho provato con
    \n:
    Codice PHP:
    $myFile "code;#COL#;titolo;#COL#;descrizione;#COL#;iva;#COL#;categoriaPrimaria;#COL#;categoriaSecondaria;#COL#;categoriaTerziaria;#COL#;tipologia;#COL#;primaCategoriaFatturazione;#COL#;secondaCategoriaFatturazione;#COL#;terzaCategoriaFatturazione;#";

    $i 0;
    $myRngRay = array();
    $rayRng mysql_query("SELECT value FROM fasce_prezzo WHERE idListino = '$idListino' ORDER BY value");
    while(list(
    $myRng)=mysql_fetch_array($rayRng)){
        
    $myRngRay[$i] = $myRng;
        
    $myRng xDecimaliStampa($myRng$qq);
        
    $myRng str_replace("'"''$myRng);
        
    $myFile .= 'COL#;'.$myRng.';#';
        
    $i++;
    }

    $myFile .= 'ROW#;'."\n"

    ma non và.. aprendo il file con editor di testo mi mostra il sombolo quadrato, con excel mi dà una riga si e una no...
    che era più o meno il risultato che ottenevo prima..

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    scusa ho editato, rileggi il messaggio precedente.

    Per quanto riguarda il ritorno a capo come delimitatore di linea sono sicuro che debba funzionare.

    Per essere sicuro apri il file csv generato con il notepad, e vedi se il risultato è visibile in modo corretto.

    Tutt'al più cambia \n con \r\n.

    Attento che questi codici devono essere tra apici doppi altrimenti non fungono.

    ciao

  7. #7
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da gianiaz
    scusa ho editato, rileggi il messaggio precedente.

    Per quanto riguarda il ritorno a capo come delimitatore di linea sono sicuro che debba funzionare.

    Per essere sicuro apri il file csv generato con il notepad, e vedi se il risultato è visibile in modo corretto.

    Tutt'al più cambia \n con \r\n.

    Attento che questi codici devono essere tra apici doppi altrimenti non fungono.

    ciao

    mmh, nada.
    sia che con \n che \r\n non funziona..

    ho provato con \t, che mi sembrava di ricordare che era anche lui un simbolo di accapo, e funziona, solo che aprendo il file con un editor mi và si a capo, ma mi mette anche un simbolo di tabulazione dopo.
    ed excel me lo interpreta come il quadrato.. uff..


    per il discorso dell'apice come delimitatore.. ho provato come dici te, a mettere le virgolette come separatore di colonna e il punto e virgola come separatore di riga.. ma non funzia, me lo prende come testo unico..

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  8. #8
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    oh, guarda che è strano.

    adesso ho provato a rimuovere tutto, e sembra funzionare
    Codice PHP:
    $myFile "code;#COL#;titolo;#COL#;descrizione;#COL#;iva;#COL#;categoriaPrimaria;#COL#;categoriaSecondaria;#COL#;categoriaTerziaria;#COL#;tipologia;#COL#;primaCategoriaFatturazione;#COL#;secondaCategoriaFatturazione;#COL#;terzaCategoriaFatturazione;#";

    $i 0;
    $myRngRay = array();
    $rayRng mysql_query("SELECT value FROM fasce_prezzo WHERE idListino = '$idListino' ORDER BY value");
    while(list(
    $myRng)=mysql_fetch_array($rayRng)){
        
    $myRngRay[$i] = $myRng;
        
    $myRng xDecimaliStampa($myRng$qq);
        
    $myRng str_replace("'"''$myRng);
        
    $myFile .= 'COL#;'.$myRng.';#';
        
    $i++;
    }

    $myFile .= 'ROW#;'
    solo che non và sempre a capo.
    così, delle righe a caso, non và.. fai conto 1 su 50 non và a capo, le altre è perfetto.

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

  9. #9
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Nel frattempo in cui tu scrivevi ho fatto un test, vedi se ti può tornare utile, a me funziona perfettamente con openoffice:

    Codice PHP:
    <?php
    $records 
    = array();

    $record = array();

    $record[] = "Test'";
    $record[] = "Prova";
    $record[] = "Gianiaz";

    $records[] = $record;

    $record = array();
    $record[] = "Test2'";
    $record[] = "Prova2";
    $record[] = "Thitan";

    $records[] = $record;

    $delimitatore_testo "'";
    $delimitatore_campo ";";
    $delimitatore_riga "\n";
    $filename 'test.csv';
    $csv "";
    foreach(
    $records as $record) {

      
    $riga "";

      foreach(
    $record as $valore) {
        if(
    $riga) {
          
    $riga .= $delimitatore_campo;
        }
        
    $riga .= $delimitatore_testo.str_replace($delimitatore_testo$delimitatore_testo.$delimitatore_testo$valore).$delimitatore_testo;
      }

      
    $riga .= $delimitatore_riga;

      
    $csv .= $riga;

    }

    $handle fopen($filename'w');
    fwrite($handle$csv);
    fclose($handle);


    ?>

  10. #10
    Utente di HTML.it L'avatar di thitan
    Registrato dal
    Feb 2001
    Messaggi
    716
    Originariamente inviato da gianiaz
    Nel frattempo in cui tu scrivevi ho fatto un test, vedi se ti può tornare utile, a me funziona perfettamente con openoffice:

    Codice PHP:
    <?php
    $records 
    = array();

    $record = array();

    $record[] = "Test'";
    $record[] = "Prova";
    $record[] = "Gianiaz";

    $records[] = $record;

    $record = array();
    $record[] = "Test2'";
    $record[] = "Prova2";
    $record[] = "Thitan";

    $records[] = $record;

    $delimitatore_testo "'";
    $delimitatore_campo ";";
    $delimitatore_riga "\n";
    $filename 'test.csv';
    $csv "";
    foreach(
    $records as $record) {

      
    $riga "";

      foreach(
    $record as $valore) {
        if(
    $riga) {
          
    $riga .= $delimitatore_campo;
        }
        
    $riga .= $delimitatore_testo.str_replace($delimitatore_testo$delimitatore_testo.$delimitatore_testo$valore).$delimitatore_testo;
      }

      
    $riga .= $delimitatore_riga;

      
    $csv .= $riga;

    }

    $handle fopen($filename'w');
    fwrite($handle$csv);
    fclose($handle);


    ?>
    funziona..
    uff...

    a s'to punto l'unica cosa che mi viene in mente è che i file che ho importato col vecchio metodo, cioè

    $myFile = $dati."
    ";

    abbiano inserito nel db il simbolo strano.. anzi ne ho la certezza.

    c'è un replace in query che posso fare per segarli tutti in un colpo solo?

    intanto grazie per l'aiuto!

    www.inter-rail.it
    travellers, not tourist
    Is cuma cá mhinice a théann tú ar strae; is é is tábhachtaí gurb áil leat do bhealach a aimsiú arís.

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.