mercoledì 25 settembre 2019

Esportare un DataTable in un file Excel in VB.Net e C#

Si riporta l'articolo scritto per il sito https://www.iprogrammatori.it/articoli/programmazione/art_esportare-un-datatable-in-un-file-excel-_1640.aspx

In questo articolo vedremo come tramite i linguaggi di programmazione più usati, quali Visual Basic Net e C# in ambiente Windows Forms, possiamo esportare i dati presenti in una classe di tipo “DataTable” o meglio oggetto, in un file di Microsoft Excel, il tutto come mostrato in figura 1.

Figura 1 – il risultato dell’esportazione

I dati presenti nell’oggetto DataTable, saranno due colonne, denominate Nome e Cognome, con due righe, ma i dati possono essere anche molto di più.
Nell’esportazione inoltre verranno aggiunti anche le intestazioni di colonna, in questo caso con i nomi presenti nella proprietà “Name” dei vari oggetti “DataColumn” impostati quando si inizializza la classe.
I frammenti di codice si possono usare anche per l’ambiente “Web” quindi in Asp.Net.

Creazione del progetto

Si crea un nuovo progetto di tipo Windows Application, selezionando come modello “Desktop” tramite il linguaggio di proprio interesse.
Una volta creato il progetto, aggiungere un pulsante nella form, in modo che richiama la funzionalità di esportazione.
Terminata la parte di configurazione e grafica, passiamo alla parte relativa alla stesura del codice.
Scrittura del codice
Passiamo in visualizzazione codice della nostra form in modo da inserire lo spazio dei nomi per la gestione dei file e del testo.
In alto, sopra la dichiarazione della nostra classe form, inseriamo lo spazio dei nomi per gestire i file, qui di seguito tale dichiarazione per entrambi i linguaggi.



VB.Net

Imports System.IO

Imports System.Text

 

C#

using System.Text;

using System.IO;

Ora dobbiamo scrivere a livello di classe, in particolar modo dopo la dichiarazione di classe form, un oggetto a livello di form, quindi scriveremo un oggetto di tipo DataTable, sotto alla dichiarazione della form, scriviamo il seguente form per creare un oggetto a livello di form.



VB.Net

Public Class Form1

    Dim DttDati As New DataTable

C#

public partial class Form1 : Form

    {

        DataTable DttDati = new DataTable();

Ora nell’evento load della nostra form, dobbiamo scrivere il codice per valorizzare l’oggetto DataTable con due colonne e due righe. Le colonne saranno denominate rispettivamente, “Nome” e “Cognome” questa dichiarazione sarà anche usata per impostare le intestazioni di colonna nel file Excel.
Qui di seguito si riporta il frammento di codice di tali operazioni per i linguaggi di programmazione Visual Basic Net e C#



VB.Net

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Try

            Dim DtcNome As DataColumn = New DataColumn("Nome")

            Dim DtcCognome As DataColumn = New DataColumn("Cognome")

            DttDati.Columns.Add(DtcNome)

            DttDati.Columns.Add(DtcCognome)

            Dim Riga As DataRow = DttDati.NewRow()

            Riga("Nome") = "Emanuele"

            Riga("Cognome") = "Mattei"

            DttDati.Rows.Add(Riga)

            Riga = DttDati.NewRow()

            Riga("Nome") = "Luigi"

            Riga("Cognome") = "Cristaldi"

            DttDati.Rows.Add(Riga)

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

    End Sub

 

C#

 

private void Form1_Load(object sender, EventArgs e)

        {

            try

            {

                DataColumn DtcNome = new DataColumn("Nome");

                DataColumn DtcCognome = new DataColumn("Cognome");

                DttDati.Columns.Add(DtcNome);

                DttDati.Columns.Add(DtcCognome);

                DataRow Riga = DttDati.NewRow();

                Riga["Nome"] = "Emanuele";

                Riga["Cognome"] = "Mattei";

                DttDati.Rows.Add(Riga);

                  Riga = DttDati.NewRow();

                  Riga["Nome"] = "Luigi";

                  Riga["Cognome"] = "Cristaldi";

                  DttDati.Rows.Add(Riga);

 

            }

            catch (Exception ex)

            {

                 MessageBox.Show(ex.Message);

            }

        }


Ora dobbiamo passare in visualizzazione codice, facciamo doppio click sul pulsante, in modo che viene creato il codice per l’evento click del pulsante e ci viene visualizzata la modalità codice.
Il codice dell’evento click del pulsante, permetterà di selezionare tutti nomi di colonne, per impostare in un oggetto di tipo “StringBuilder” le intestazioni di colonne nel file Excel che verrà generato, mentre tramite l’enumerazione della proprietà “Rows” del DataTable verrà effettuato un ciclo su tutti i record presenti nella DataTable.
Il tutto sarà utilizzato con le istruzioni “Select”, mentre la classe “SaveFileDialog” ci permetterà di selezionare sul pc, il percorso e nome del file da attribuire al file “Excel.
Qui di seguito si riporta l’evento click del pulsante esportazione dei dati in Microsoft Excel, per entrambi i linguaggi.



VB.Net

Private Sub BtnEsportaDtt_Click(sender As Object, e As EventArgs) Handles BtnEsportaDtt.Click

        Try

 

     

        Dim DttDatiEsporta As DataTable = DttDati

        Dim sb As StringBuilder = New StringBuilder()

        Dim NomiColonne As IEnumerable(Of String) = DttDatiEsporta.Columns.Cast(Of DataColumn)().[Select](Function(column) column.ColumnName)

        sb.AppendLine(String.Join(";", NomiColonne))

 

        For Each row As DataRow In DttDatiEsporta.Rows

            Dim Elementi As IEnumerable(Of String) = row.ItemArray.[Select](Function(elemento) elemento.ToString())

            sb.AppendLine(String.Join(";", Elementi))

        Next

 

        Dim salvaFile As SaveFileDialog = New SaveFileDialog()

        salvaFile.Filter = "File Excel(.csv)|*.csv"

        salvaFile.Title = "Salva file sul pc"

        salvaFile.CheckPathExists = True

        salvaFile.FileName = "EsportaDati.csv"

        salvaFile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

 

        If salvaFile.ShowDialog() = System.Windows.Forms.DialogResult.OK Then

            File.WriteAllText(salvaFile.FileName, sb.ToString())

            MessageBox.Show("File salvato Correttamente")

            End If

        Catch ex As Exception

            MessageBox.Show(ex.Message)

        End Try

    End Sub

 

 

C#

 

   private void BtnEsportaDtt_Click(object sender, EventArgs e)

        {

 

            try

            {

 

         

            DataTable DttDatiEsporta = DttDati;             

 

 

            StringBuilder sb = new StringBuilder();

 

            IEnumerable<string> NomiColonne = DttDatiEsporta.Columns.Cast<DataColumn>().

                                              Select(column => column.ColumnName);

            sb.AppendLine(string.Join(";", NomiColonne));

 

            foreach (DataRow row in DttDatiEsporta.Rows)

            {

                IEnumerable<string> Elementi = row.ItemArray.Select(elemento => elemento.ToString());

                sb.AppendLine(string.Join(";", Elementi));

            }

 

            SaveFileDialog salvaFile = new SaveFileDialog();

            salvaFile.Filter = "File Excel(.csv)|*.csv";

            salvaFile.Title = "Salva file sul pc";

            salvaFile.CheckPathExists = true;

 

            salvaFile.FileName = "EsportaDati.csv";

            salvaFile.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

            if (salvaFile.ShowDialog() == System.Windows.Forms.DialogResult.OK)

            {

 

 

                File.WriteAllText(salvaFile.FileName, sb.ToString());

                 MessageBox.Show("File salvato Correttamente");

 

            }

            }

            catch (Exception)

            {

                MessageBox.Show(ex.Message);

            }

        }




Conclusioni

Ora non ci resta che testare il nostro applicativo, eseguendolo. Questa tecnica ha fornito al lettore un modo di come esportare i dati presenti in un DataTable, oppure se questi dati sono presenti in un controllo DatagridView o GridView (per i controllo web) basterà effettuare la conversione della proprietà “DataSource” del controllo in un DataTable, in un file Microsoft Excel.
Tecnica che può tornare utile quando si vuole dare un prospetto della propria gestione dei dati, in altri formati ma soprattutto da inviare e trasferire ad altri utenti.
Una funzionalità che tornerà utile a chi sviluppa applicazioni gestionali.

martedì 24 settembre 2019

Come rimuovere chiavetta usb mac



Per coloro che utilizzano il sistema Mac, o per coloro che si stanno avvicinando a questo sistema operativo, una volta inserita la chiavetta e si vuole rimuoverla dopo l'utilizzo, la procedura è molto semplice.
Sulla scrivania (Desktop) dopo aver aggiunto la chiavetta esterna, verrà visualizzata una nuova icona che riguarda la chiavetta, a forma di hard disk, con il nome dell'unità.
In alcuni casi può comparire anche il nome "No Name".
Per rimuoverla, bisogna fare tasto destro su tale icona, e dal menu di scelta rapida che viene visualizzato, selezionare la voce "Espelli "No Name"" dove "No Name" è il nome della chiavetta.
A questo punto, l'icona non sarà più presente e sarà così possibile rimuovere in tutta sicurezza la chiavetta.

lunedì 23 settembre 2019

LEGO Batman Trilogy




Altro gioco gratuito disponibile fino al 26 settembre dal sito https://www.epicgames.com/store/it/bundles/lego-batman-trilogy che permette di ricevere gratuitamente la trilogia di Lego Batman.
Per il download e maggiori informazioni visitate il sito indicato.

Ebook gratuiti sull'ambiente

ECOALLECO

Per tutti gli appassionati di ebook, segnalo una serie di ebook gratuiti in lingua italiana da scaricare gratuitamente in ambito natura.
Dal seguente sito https://www.ecoalleco.it/gratuiti-20  è possibile scaricare una serie di ebook gratuiti.

domenica 22 settembre 2019

Download Batman: Arkham Collection



Fino al 26 settembre 2019, è possibile scaricare gratuitamente il gioco Batman Arkham Collection, dal seguente sito https://www.epicgames.com/store/it/bundles/batman-arkham-collection che di volta in volta offre.
Il sito è in lingua italiana.