Visualizzare un file Excel in una pagina web ASP.NET

Articolo che illustra una tecnica di come caricare su una pagina web i dati presenti su un file Excel.

il
Sviluppatore Microsoft .Net, Collaboratore di IProgrammatori

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>
<asp: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.