Esportazione in una tabella di testo (txt)

di il
20 risposte

Esportazione in una tabella di testo (txt)

Buongiorno a tutti, premettendo che non sono un programmatore ma un ingegnere civile, avrei bisogno del vostro aiuto per la mia tesi di laurea magistrale. Lavoro con un programma di grafica che si chiama Grasshopper, il quale programma attraverso algoritmi che vengo semplicemente uniti con delle frecce, difficile per me spiegarlo. Comunque sia c'è la possibilità di usare un algoritmo che si chiama VBscript che permette di programmare in VB net per creare appositamente degli algoritmi. La mia richiesta sarebbe quella di ricevere una mano in quanto ho diversi dati di input (rappresentanti per esempio le coordinate di alcuni punti) che necessito di trasformare in un file txt però sotto forma di tabella, quindi tutto incolonnato e diviso perfettamente. Possibile far questo? Potreste aiutarmi? Vi ringrazio in anticipo.

20 Risposte

  • Re: Esportazione in una tabella di testo (txt)

    Vbscript è un linguaggio con cui si realizzano piccoli programmi non un algoritmo.

    In tutti i casi devi indicare nel firum un problema specifico e si possono dare consigli. Sicuramente non si puo2fare tutto un lavoro al posto tuo, sarebbe una cosa diversa per cui questo forum non è il posto giusto in cui chiedere.
  • Re: Esportazione in una tabella di testo (txt)

    Il mio problema è che non so come creare una tabella in un file txt con il linguaggio VB net
  • Re: Esportazione in una tabella di testo (txt)

    Quindi devi usare vb.net non vbscript.

    Qui non ti si può scrivere tutto il codice, non è fatto per questo il forum.
  • Re: Esportazione in una tabella di testo (txt)

    SuperFrance ha scritto:


    Il mio problema è che non so come creare una tabella in un file txt con il linguaggio VB net

    Hai pensato l'ipotesi di salvare ogni campo di valore con i caratteri di fine campo e di fine riga?
    Esempio:
    (idPunto; X; Y; Z;)
    0;10;0;0:
    1;0.5; 0.0; 0.0:
    2;1; 0; 1:
    3;25; 25; 25;

    Al posto di salvare il file in ".txt" lo puoi salvare in formato ".cvs".
    In excel importi dal menù importa i dari dal file ".cvs" indicando i segni di fine campo e di fine riga, per esempio il punto e virgola ";" per il fine campo.
    Altra soluzione al posto di salvare il file in ".txt" lo puoi salvare in formato ".html" e quindi usare i tag "table", "td", "tr" per creare la tabella e le righe e le colonne.
    Se invece desideri una tabella con l'interfaccia grafica in una soluzione in vb.net o c#.net so come fare.
  • Re: Esportazione in una tabella di testo (txt)

    Perché non usi VBA, che è molto piu' semplice?
    Sub ExportToText()
      Dim RngSource As Range
      Set RngSource = Selection     ' esporta la selezione attuale
      Workbooks.Add                 ' crea un workbook temporaneo
      RngSource.Copy Selection
      If Len(Dir("Exported.tab")) = 12 Then Kill "Exported.tab"
      ActiveWorkbook.SaveAs Filename:="Exported.tab", FileFormat:=xlText, CreateBackup:=False
      ActiveWorkbook.Close SaveChanges:=False
    End Sub
    Un consiglio: Via le mani dal formato csv, è un casino. Tab-delimited è piu' elegante.
  • Re: Esportazione in una tabella di testo (txt)

    jj2007 ha scritto:


    Perché non usi VBA, che è molto piu' semplice?
    Sub ExportToText()
      Dim RngSource As Range
      Set RngSource = Selection     ' esporta la selezione attuale
      Workbooks.Add                 ' crea un workbook temporaneo
      RngSource.Copy Selection
      If Len(Dir("Exported.tab")) = 12 Then Kill "Exported.tab"
      ActiveWorkbook.SaveAs Filename:="Exported.tab", FileFormat:=xlText, CreateBackup:=False
      ActiveWorkbook.Close SaveChanges:=False
    End Sub
    Un consiglio: Via le mani dal formato csv, è un casino. Tab-delimited è piu' elegante.
    Si potrebbe anche dire Tab-delimited è più pesante se il peso di un file csv che rappresenta gli stessi dati sia più leggero.
  • Re: Esportazione in una tabella di testo (txt)

    Cursore ha scritto:


    Si potrebbe anche dire Tab-delimited è più pesante se il peso di un file csv che rappresenta gli stessi dati sia più leggero.
    Si potrebbe anche dire se fosse vero, ma non lo è. Facile da verificare
  • Re: Esportazione in una tabella di testo (txt)

    jj2007 ha scritto:


    Cursore ha scritto:


    Si potrebbe anche dire Tab-delimited è più pesante se il peso di un file csv che rappresenta gli stessi dati sia più leggero.
    Si potrebbe anche dire se fosse vero, ma non lo è. Facile da verificare
    Si potrebbe anche dire che sono identici e che non c'è nulla di elegante in entrambi i casi.
    facilissimo da verificare
    tab non è nulla di magico, è chr 9.
  • Re: Esportazione in una tabella di testo (txt)

    @jj2007 non dire sciochezze.
    Il formato csv, comma separated value, e' il formato piu' stupido per l'importazione/esportazione di dati

    La 'pesantezza' tra tab e virgola e ESATTAMENTE la stessa, e comunque, la 'pesantezza del file', a meno di non dover trasferire gigabyte di dati, il che vuol dire DIVERSE DECINE DI GB di testo, e' ININFLUENTE.

    Per cose MOOOOOLTO piu' complesse, ci sono formati binari molto piu' efficienti (HDF5), ma, OVVIAMENTE, anche piu' complessi da utilizzate

    @cursore, non confondere i formati di trasferimento dei dati (csv, json, xml, hdf4/hdf5, arff,...) con la sua rappresentazione in forma tabellare usata in ambito web. E poi PERCHE' in ambito web e non in TeX, o Matlab o Mathematica,....?


    Il tipo di rappresentazione di un programma mediante 'scatolette magiche' si chiama 'dataflow programming', o 'visual programming', nulla di complicato.
  • Re: Esportazione in una tabella di testo (txt)

    migliorabile ha scritto:


    @jj2007 non dire sciochezze.
    Il formato csv, comma separated value, e' il formato piu' stupido per l'importazione/esportazione di dati
    Proprio quello che ho scritto, carissimo.
    La 'pesantezza' tra tab e virgola e ESATTAMENTE la stessa
    NO.
    Questa<Tb>è<Tb>una<Tb>riga n+#colonne
    "Questa","è","una","riga" n+3*#colonne
  • Re: Esportazione in una tabella di testo (txt)

    Questa<Tb>è<Tb>una<Tb>riga n+#colonne
    "Questa","è","una","riga" n+3*#colonne


    Nessuno ti obbliga ad usare le virgolette. Sono neccessarie SOLO se nella STRINGA ci sono dei tab o delle virgole.
    Un consiglio: Via le mani dal formato csv, è un casino


    Se sei convito che il formato csv sia peggio del tab delimited, chi siamo noi per dimostrarti il contrario?
    Questa<Tab>è<Tab>una<Tab>riga n+#colonne
    Questa<Comma>è<Comma>una<Comma>riga n+#colonne
    Che dire: sono TOTALMENTE diversi
  • Re: Esportazione in una tabella di testo (txt)

    migliorabile ha scritto:


    Nessuno ti obbliga ad usare le virgolette. Sono neccessarie SOLO se nella STRINGA ci sono dei tab o delle virgole.
    E ciò ti costringe ad implementare verifiche nel tuo codice. Attenzione pure alle virgolette dentro le stringhe. Il formato csv è davvero un casino, e chi non lo vuole ammettere rischia di perdere credibilità. Nemmeno MS Excel sa gestirlo correttamente.
  • Re: Esportazione in una tabella di testo (txt)

    @jj2007 hai ragione e torto allo stesso momento!

    -- come in TUTTI i formati testo di serializzazione dei dati, ci sono dei CARATTERI SPECIALI CHE VANNO TRATTATI OPPORTUNAMENTE:

    la virgola se usi la virgola come separatore dei campi, allo stesso modo il tab
    l'XML ha la stessa rogna se nel testo ci metti i caratteri "<", ">", "&", ecc
    il JSON con le stringhe che contengono apice e doppi apici contemporaneamente
    OGNI FORMATO DI SERIALIZZAZIONE PRESENTA ROGNE

    quindi, hai ragione nel dire che il CSV e' incasinato, hai torto nel dire che usare la tabulazione semplifica le cose, perche' non le semplifica affatto. HANNO ESATTAMENTE LE STESSE ROGNE. Come diceva quello di Aiazzone:

    Provare per credere

    -- poi dipende da CHE COSA ci metti nel file: se sono solo numeri, ed eventualmente un header con il nome delle colonne dove il nome e' formattato come un identificatore di n normale linguaggio di programmazione, tutta una serie di elucubrazioni mentali si possono risparmiare

    -- in generale e' cosa buona e giusta usare delle librerie per trattare i formati file, perche' e' responsabilita' della libreria tenere traccia di TUTTI I DETTAGLI problematici, che siano CSV, XML, JSON o altro

    -- IN OGNI CASO i dati vanno validati, almeno se i dati sono stati generati da qualcun altro che potrebbe avere fatto pasticci

    Quindi, il problema della credibilita' non si pone
    O si pone, ma in un'accezione diversa

    Nota: NON E' Excel che non lo sa gestire correttamente', sono i PROGRAMMATORI a non saperlo gestire correttamente
  • Re: Esportazione in una tabella di testo (txt)

    migliorabile ha scritto:


    hai torto nel dire che usare la tabulazione semplifica le cose, perche' non le semplifica affatto. HANNO ESATTAMENTE LE STESSE ROGNE.
    Il formato csv prevede
    "stringa, purtroppo con virgola"
    ; quindi la necessità di metterci i "quotes". Visto che devi anche badare a
    "stringa, "purtroppo" con virgola"
    , hai il caos completo. Se vuoi esempi reale, qui trovi un database ufficiale delle Nazione Unite. Clicca sul tab "Series data", Download the entire MDG dataset. I problemini sono un po' sotto, prova a cercare, per esempio, WB Staff estimates dentro il file. Riga #42293, colonna B dovrebbe essere
    WB Staff estimates. Cambodia Poverty Assessment 2013 "Where Have All The Poor Gone?",  May 2013. Cambodia Socio-Economic Survey 2009.
    Se vedi qualcos' altro nel tuo spreadsheet software preferito: il colpevole è il formato incasinato csv.

    Ci sono anche 34 righe con un Ascii 10, un linefeed dentro una stringa. Un piccolo errore rarissimo (34/44500=0.076%) ma non insignificante. Prova riga 44522:
    MMR estimates have been rounded according to the following scheme: < 100 rounded to nearest 1; 100–999 rounded to
    nearest 1; and = 1000 rounded to nearest 10.
    Alleluia ed evviva Excel che permette sciocchezze del genere.

    Tutto questo non succede con tab delimited. Ascii 9 è l'unico e non ambiguo delimiter, punto e basta. Non sono previste stringhe con embedded tab.
Devi accedere o registrarti per scrivere nel forum
20 risposte