giovedì 14 luglio 2016

Asp.Net visualizzare i dati di un file Excel in una gridview tramite .Net

Si riporta l'articolo scritto per il sito http://www.iprogrammatori.it/articoli/programmazione/art_aspnet-visualizzare-un-file-excel-in-una_1443.aspx

In questo articolo vediamo come realizzare una semplice procedura che permette di visualizzare i dati di un file Excel in una pagina web ASP.NET, le informazioni saranno contenute in un controllo GridView.
Una tecnica semplice che può tornare utile nelle varie procedure di gestione dati su file Excel.
Prima di tutto bisogna creare un file Excel, nel nostro caso si creano tre colonne, una con il nome ID, un’altra colonna con l’intestazione impostato a “Nome” ed infine l’ultima colonna, la terza con l’intestazione con valore “Cognome”.
Riempiamo a nostro piacimento le righe successive.

L’immagine 1 illustra il file Excel.


Figura 1 – Visualizza dati Excel

A questo punto salviamo il nostro file Excel.
Si creare un progetto di tipo web, nel linguaggio di proprio interesse.
Inseriamo nella pagina web, un controllo label, un controllo di tipo button che permetterà il caricamento dei dati, un controllo upload ed infine un controllo Gridview.
La pagina sarà come mostrata in figura 2.


Figura 2 – la pagina con i vari controlli

Qui di seguito si riporta il codice HTML.


<
asp:FileUpload ID="FileUpload1" runat="server"
/>

    <
asp:Button ID="BtnCarica" runat="server" Text="Carica"

        onclick="BtnCarica_Click" 
/>

    <br />

    <br />

    <
asp:GridView ID="GridView1" runat="server"
>

    </asp:GridView
>

    <a
 
sp:Label ID="lbltesto" runat="server" Text=""></asp:Label
 
>

Stesura del codice

Passiamo in visualizzazione codice, o tramite il pulsante “visualizza codice” oppure tramite doppio click sul pulsante.
Inseriamo lo spazio dei nomi per gestire i file ed i dati, qui di seguito si riportano tali dichiarazioni per i linguaggi di programmazione VB.Net e C#


VB.Net

Imports System.IO

Imports System.Data.OleDb

Imports System.Data

 

C#

using System.IO;

using System.Data.OleDb;

using System.Data;


Nell’evento click andremo a scrivere il codice, che permette di salvare il file in una cartella (temp) in cui viene eseguito l’applicazione web, e tramite le classi oledb, andiamo ad effettuare una select nel file Excel come se fosse una tabella.
Il risultato che otteniamo nel dataset sarà caricato in un controllo Gridview.
Qui di seguito si riporta il frammento di codice dell’evento click del pulsante per i linguaggi di programmazione VB.Net e C#


VB.Net

Protected Sub BtnCarica_Click(sender As Object, e As EventArgs) Handles BtnCarica.Click

        If FileUpload1.HasFile Then

            Dim fileEstenzione As String = System.IO.Path.GetExtension(FileUpload1.FileName)

            If fileEstenzione = ".xls" OrElse fileEstenzione = ".xlsx" Then

                Dim NomeFile As String = System.IO.Path.GetFileName(FileUpload1.FileName)

                FileUpload1.SaveAs(Server.MapPath(Convert.ToString("~/temp/") & NomeFile))

                Dim NomePathFileExcel As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(Convert.ToString("~/temp/") & NomeFile) + ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"""

                Dim connessione As New OleDbConnection(NomePathFileExcel)

                Dim sql As String = "Select * from [Foglio1$];"

                Dim DtaDati As New OleDbDataAdapter(sql, connessione)

                Dim DtsDati As New DataSet()

                DtaDati.Fill(DtsDati)

                If DtsDati.Tables(0).Rows.Count > 0 Then

                    GridView1.DataSource = DtsDati.Tables(0)

                    GridView1.DataBind()

                End If

            Else

                lbltesto.Text = "Selezionare un file Excel"

            End If

        End If

    End Sub

 

C#

protected void BtnCarica_Click(object sender, EventArgs e)

        {

            if (FileUpload1.HasFile)

            {

                string fileEstenzione = System.IO.Path.GetExtension(FileUpload1.FileName);

                if (fileEstenzione == ".xls" || fileEstenzione == ".xlsx")

                {

                    string NomeFile = System.IO.Path.GetFileName(FileUpload1.FileName);

                    FileUpload1.SaveAs(Server.MapPath("~/temp/" + NomeFile));

                    string NomePathFileExcel = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath("~/temp/" + NomeFile) + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"";

                    OleDbConnection connessione = new OleDbConnection(NomePathFileExcel);

                    string sql = "Select * from [Foglio1$];";

                    OleDbDataAdapter DtaDati = new OleDbDataAdapter(sql, connessione);

                    DataSet DtsDati = new DataSet();

                    DtaDati.Fill(DtsDati);

                    if (DtsDati.Tables[0].Rows.Count > 0)

                    {

                        GridView1.DataSource = DtsDati.Tables[0];

                        GridView1.DataBind();

                    }

                }

                else

                {

                    lbltesto.Text = "Selezionare un file Excel";

                }

            }

        }





Conclusioni
L’articolo ha voluto illustrare una tecnica di come visualizzare i dati presenti in un file Excel, in una pagina web, in maniera molto semplice e veloce.
Le potenzialità offerte dalla tecnologia Asp.Net e dell’applicativo Microsoft Excel offre al programmatore scenari ampi e di facile utilizzo, permettendo di ottenere notevoli risultati con semplicità.
Utilizzare Excel come fonte base è una tecnica che viene usata in diverse circostanze in ambito consumer e business, proprio per la flessibilità offerta da questo applicativo.

Nessun commento: