Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291

    VB6 - Istruzione Write # ed Excel.

    Pe salvare i dati su HD uso i file sequenziali con l'istruzione Write# e Filter con l'estenzione .csv - per intenderci:
    codice:
    ...
    .Filter = "File di programma (*.csv)|*.csv|Documenti di Testo (*.Txt)|"
            .FilterIndex = 1
            .DefaultExt = "csv"
    ...
    ...
    Open FileName For Output As #FileNum
            Write #FileNum, strCL1, dblCL2, dblCL3,..., ...
        Close #FileNum
    Il codice funziona bene sia per salvare che per aprire; il punto è che se apro il predetto file con Excel le informazioni sono contenute tutte nella prima cella e non ciascun dato in una cella.
    C'é un modo per salvare i dati e far sì che poi siano leggibili correttamente anche in Excel ?
    Grazie per l'aiuto.
    LM

  2. #2
    Purtroppo non basta specificare l'estensione del file! Premesso che non esistono regole rigide su questo formato, in internet ho trovato questa definizione:
    • Un record per ogni riga: come separatore di riga si può usare LF (ASCII 10) o CRLF (ASCII 13+10)
    • I campi devono essere separati da virgole (o da ; come fa excel)
    • Gli spazi sono ignorati (a meno che non siano delimitati da doppie virgolette)
    • Carattere apostrofo ('): bisogna delimitare il campo con le doppie virgolette
    • Carattere doppie virgolette ("): deve essere raddoppiato

    Evidentemente non hai scritto il file nel modo giusto, un CSV prodotto da Excel di solito è così:
    codice:
    aaa;bbb;ccc;ddd
    qqq;www;eee;rrr
    aaa;sss;ddd;fff
    ...
    Modifica il tuo codice opportunamente inserendo, tra un campo e l'altro, un carattere virgola o punto e virgola. Non dimenticare di andare a capo tra un record e l'altro (carattere vbCrLf).

    Ciao
    Chi non cerca trova.

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    tas Grazie della risposta.
    La situazione é questa, se apro il file di Excel i dati si presentano così, tutti nella stessa cella:

    - Costi d'impianto e d'ampliamento,10000,10000,..., ...

    Ora, come hai letto nella richiesta, salvo i dati con questa istruzione:

    Open FileName For Output As #FileNum
    Write #FileNum, strCL1, dblCL2, dblCL3,..., ...
    Close #FileNum

    ove le variabili strCL1, dblCL2,contengono i dati da salvare. Come posso scrivere l'istruzione perché avvenga quello che dici?
    LM

  4. #4
    Facendo una rapida indagine ho come l'impressione che Excel utilizzi come carattere di separazione campi quello specificato nelle "Opzioni internazionali e della lingua" del Pannello di controllo di Windows. Normalmente il Windows italiano ha queste impostazioni:
    Separatore decimale: ,
    Simbolo raggruppamento cifre: .
    Separatore di elenco: ;
    Per aggirare il problema fai così:
    codice:
        Open FileName For Output As #FileNum
        Print #FileNum, strCL1 & ";" & dblCL2 & ";" & dblCL3
        Close #FileNum
    Ciao
    Chi non cerca trova.

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    tas se molto cortese.
    Prima ho provato a separare con il ; ma senza risultato. Ora provo come mi hai indicato.
    Grazie.
    LM

  6. #6
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    No, non funziona. I dati sono contenuti tutti in una cella.
    LM

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    tas, questa é bella. Con il comando Write #FileNum, NON funziona. Con l'istruzione Print sì. Come Mai ?
    LM

  8. #8
    L'istruzione Write inserisce automaticamente il carattere di separazione campi (la virgola) mentre Print stampa la stringa così com'è. Non fare confusione tra la virgola richiesta dall'istruzione Write e quella scritta effettivamente nel file di testo: nella sintassi di VB per separare dei parametri in una funzione o metodo è sempre necessario usare la virgola, non esistono eccezioni.
    Chi non cerca trova.

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.