giovedì 20 settembre 2012

Introduzione a FileHelpers VB.Net e C#

Riporto l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_utilizzare-filehelpers-library_1204.aspx
Qui di seguito verrà illustrato l’utilizzo di FileHelpers, una libreria gratuita per la gestione dei file di testo.
Il tutorial, di cui questo articolo è la prima parte, è composto da tre articoli, che forniscono le basi per l'utilizzo di questo interessante componente.
Questa libreria completamente gratuita, permette di gestire nei propri progetti .Net, i file di testo, delineati con un particolare carattere.
Andare nel sito http://filehelpers.sourceforge.net/  scaricare nella pagina Download il progetto, al momento la versione è ferma sulla 2.0.
Dopo averla scaricata, se avete installato Visual Studio 2010, vi chiederà di convertirla, procedete con la conversione automatica.
Al termine della conversione, troveremo tre progetti.
Il progetto FileHelpers.2005 contiene la dll che dovremmo utilizzare nei nostri progetti, il progetto “FileHelpers.Demos.2005” contiene esempi di utilizzo di questo componente,  il progetto  “FileHelpers.ExcelStorage” la gestione dei file Excel,  il progetto “FileHelpers.Tests” relativo ai test,  ed infine il progetto “FileHelpers.WizardApp” riguardante il Wizard per la creazione delle classe ed esempio.
Di norma il progetto di avvio, è impostato su “FileHelpers.WizardApp” assicuriamoci che è così ed avviamo il progetto.
All’avvio, verrà visualizzata una Windows Form, come mostrato in figura 1, che ci permette di seguire una procedura guidata per la creazione di una classe per la gestione del file.


Figura 1

 

Il campo RecordClass Name, ci fornisce il nome della classe, mentre, il riquadro “Select the record Type” ci indica il tipo di lettura dei dati.
Dopo aver impostato i dati, per esempio il nome della classe lo chiameremo “ClasseLeggiFile” mentre selezionamo l’opzione “Delimited by vertical bar” dopo aver selezionato opportunamente la scelta “Delimited record”
A questo punto facciamo click sul pulsante “Next”, dove viene visualizzata la seconda schermata, in cui ci indica quali proprietà deve avere, il tutto come mostrato in figura 2 ed altre opzioni.



Figura 2

Dopo aver impostato i vari dati, per esempio nel campo “Number of Fields”, a 3.
Facciamo click sul pulsante “Next”,  ci viene visualizzata una finestra in cui ci fornisce indicazione per impostare le varie proprietà. Come si vede in figura 3 , sono indicati i vari campi, uno di tipo intero e due di tipo stringa.


Figura 3

Nella parte destra, viene riportato il codice della classe da inserire nel nostro progetto, tramite la casella combinata situata in alto a destra, possiamo selezionare il tipo di linguaggio.
Se facciamo click sul pulsante “Next” ci visualizzerà l’ultima finestra di questo Wizard, con un esempio di codice di utilizzo, il tutto come mostrato in figura 4.


Figura 4.

Anche in questo caso, nella parte in alto, troviamo la casella combinata, che ci indica il codice di programmazione che vogliamo come esempio di codice.

Stesura del codice
Si crea un nuovo progetto Windows Application, in riferimento al linguaggio di proprio interesse.
Dopo aver creato il progetto, referenziamo la dll “FileHelpers”, tramite il menu di scelta rapida di “Esplora Soluzione” selezioniamo “Aggiungi riferimenti…” e nella finestra che viene visualizzata, selezioniamo la dll che si trova nel progetto “FileHelpers” precedentemente utilizzato.
Come si vede in figura 5, verrà visualizzata nei riferimenti del progetto.


Figura 5
A questo punto, passiamo in visualizzazione codice, ed inseriamo lo spazio dei nomi per l’utilizzo di questa libreria.
Qui di seguito si riporta il codice delle suddette operazioni.
VB.Net
Imports FileHelpers

C#
using FileHelpers;
Si crea la classe, generata dal wizard, creata in precedenza, che ci permette di gestire i vari campi o meglio le colonne.

VB.Net
<DelimitedRecord("|")> _
Public NotInheritable Class ClasseLeggiFile


    Public ID As Int32

    Public Nome As String

    Public Cognome As String


End Class

C#
    [DelimitedRecord("|")]
    public sealed class ClasseLeggiFile
    {

        public Int32 ID;

        public String Nome;

        public String Cognome;


    }

Aggiungiamo al progetto un pulsante, in modo che possiamo scrivere il codice di lettura del file di testo.
Qui di seguito riportiamo lo schema del file di testo, delineato da tre colonne (id, nome e cognome).
1|ema|ma
2|olga|fot
3|ale|maffei
3|emanuele|maffei
Nell’evento click, scriviamo il codice per leggere i dati.


VB.Net

Private Sub BtnLeggi_Click(sender As System.Object, e As System.EventArgs) Handles BtnLeggi.Click
        Try
            Dim engineLeggi As New FileHelperEngine(Of ClasseLeggiFile)()
            engineLeggi.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue

            Dim Risultato As ClasseLeggiFile() = engineLeggi.ReadFile("FileTesto.txt")

            If engineLeggi.ErrorManager.ErrorCount > 0 Then
                engineLeggi.ErrorManager.SaveErrors("Errore.txt")
            End If
            'leggo le singole righe
            For conta As Integer = 0 To Risultato.Length - 1
                MessageBox.Show(Risultato(conta).Nome & " " & Risultato(conta).Cognome)
            Next
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
End Class

C#
private void BtnLeggi_Click(object sender, EventArgs e)
        {
            try
            {



                FileHelperEngine<ClasseLeggiFile> engineLeggi = new FileHelperEngine<ClasseLeggiFile>();

                engineLeggi.ErrorManager.ErrorMode = ErrorMode.SaveAndContinue;

                ClasseLeggiFile[] Risultato = engineLeggi.ReadFile(@"FileTesto.txt");

                if (engineLeggi.ErrorManager.ErrorCount > 0)
                    engineLeggi.ErrorManager.SaveErrors("Errore.txt");

                //leggo le singole righe
                for (int conta = 0; conta < Risultato.Length; conta++)
                {
                    MessageBox.Show(Risultato[conta].Nome + " " + Risultato[conta].Cognome);
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }

        }

Come si vede dal codice precedente,  si crea oggetto di tipo FileHelperEngine, passando come  parametro il nome della classe creata in precedenza. Il metodo readFile, permette di leggere i dati del file di testo.

Conclusioni
Questo articolo ha fornito le basi introduttive all'utilizzo della libreria FileHelpers, tramite la parola download potete scaricare il file di esempio.
Download

Riferimenti:
http://filehelpers.sourceforge.net/

Nessun commento: