posts - 82, comments - 0, trackbacks - 0

My Links

News

Archives

Post Categories

C# Download

Facebook

Informativa cookie

Linkedin

Microsoft

Msdn Gallery

Twitter

VisualBasic

Wiki Tecknet

sabato 13 luglio 2013

Eseguire una ricerca su foglio Excel da VB NET.

A volte vi e la necessità di interagire attraverso la nostra applicazione con dei File Excel , lo scopo di questo esempio e dimostrare in che modo questo e possibile. Utilizzeremo AdoNet e precisamente il namespace OleDb utilizzato anche per la gestione di File MicrosoftAccess.

Questo esempio é stato creato con VisualStudio 2012 Update 3 , il file Excel e stato creato con la versione 2007 su sistema operativo Windows8 X64 Professional. Inoltre va creato un file excel 2007 con tre colonne denominate NOME, COGNOME E MESE , il percorso di locazione del file nell'esempio e in E:\DEMO.xlsx , qualora decideste di cambiare percorso di locazione del file su disco va modificata la stringa di connessione al file nel codice di esempio.Inoltre va scaricato ed installato il motore Access DataBaseEngine che trovate a questo link http://www.microsoft.com/it-it/download/details.aspx?id=13255

Questo namespace fornisce diverse classi che possiamo utilizzare per interagire con fonti dati provenienti da File Excel , Access e altri tipi di file.Analizziamo questa porzione di codice dove troviamo le classi OleDbConnection e OledbCommand che sono i proncipali strumenti con la quale ci connettiamo ad una fonte dati.

 

Dim _ds As DataSet      
Dim _tb As DataTable     
Dim _bs As BindingSource        
 
Private Sub Form1Load(sender As Object, e As EventArgs) Handles MyBase.Load         
 _ds = New DataSet()         
 _tb = New DataTable()         
 _bs = New BindingSource()   
         
 Using myConnection As New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0; " & _                    
  "data source=E:\demo.xlsx; " & _                   
   "Extended Properties=Excel 12.0;")                          
  Using myCommand As New OleDbDataAdapter("SELECT * FROM [Foglio1$]", myConnection)                        
   myCommand.Fill(_tb)                  
     _ds.Tables.Add(_tb)                 
     _bs.DataSource = _ds.Tables(0)              
  End Using          
 End Using      
End Sub

 Questo codice sarà eseguito all'avvio dell'aplicazione essendo sotto l'evento load di Form1 ,  prima cosa dichiariamo un DataSet che non e altro che un contenitore con all'interno una o più tabelle (DataTable) e ci permette di poter lavorare in maniera disconnessa dalla fonte dati.
Dichiariamo un controllo DataTable formato da righe e colonne dove finiranno tutte le informazioni che andiamo a leggere dalla fonte dati , in ultimo un controllo  BindingSource ,quest'ultimo servirà per eseguire la ricerca e mostrare a video le informazioni e il risultato della ricerca.

Subito dopo mediante la classe OleDbConnection definiamo la stringa di connessione alla fonte dati , va definito il provider di dati , quest'ultimo varia a seconda delle versioni di Excel che andremo ad utilizzare , nel nostro caso essendo un file Excel 2007 , utilizzeremo il Microsoft.ACE.OLEDB.12.0 , definire poi la stringa di connessione che deve corrispondere all'esatta posizione dei file su disco , notare che se il file non viene trovato verrà generata a runtime un eccezione di tipo "File not found exception" , quindi assicurarsi che il file sia nel percorso specificato nella stringa di connessione.

Successivamente ci resta da definire la classe OledbDataAdapter, rappresenta i controlli di un set di dati e una connessione di database utilizzati per riempire un DataSet e aggiornare l'origine dati.
Per riempire un DataSet bisogna partire utilizzando il metodo Fill , questo comando si occupa di riempire il DataSet o DataTable mediante l'istruzione Select che abbiamo impostato nella query che abbiamo impostato come parametro della classe OledbDataAdapter.

A questo punto mediante il metodo Add agiungiamo una tabella al controllo DataSet e assegniamo alla proprietà DataSource del controllo BindingSource la tabella popolata con tutte le informazioni prelevate dalla fonte dati.

Terminato questo passaggio abbiamo in memoria tutti le informazioni necessarie per eseguire una ricerca. Si supponga di avere un file Excel chiamato demo.xlsx con al suo interno 3 colonne chiamate nome , cogmome e mese.

Eseguiremo la ricerca sfruttando il controllo BindingSource  , e precisamente la proprietà Filter , si prenda in considerazione questo esempio di codice.

 

Private Sub TextBox1Validated(sender As Object, e As EventArgs) Handles txtNome.Validated, txtCognome.Validated, txtMese.Validated 
        If sender Is txtNome Then 
            Trova(CType(sender, TextBox), "NOME") 
        ElseIf sender Is txtCognome Then 
            Trova(CType(sender, TextBox), "COGNOME") 
        ElseIf sender Is txtMese Then 
            Trova(CType(sender, TextBox), "MESE") 
        End If 
    End Sub 
 
    Private Sub Trova(ByVal textBox As Control, ByVal nomeColonna As String) 
        _bs.Filter = String.Concat(nomeColonna, " ", "LIKE '", textBox.Text, "*'") 
        DataGridView1.DataSource = _bs 
    End Sub 

 

Gestiamo gli eventi Validated dei controlli TextBox txtNome, txtCognome e txtMese , il tutto collegato ad una Sub , mediante la variabile sender andiamo a recuperare il controllo TextBox sulla quale e stato eseguito l'evento Validated , richiamando poi la Sub Trova. Questa Sub richiede due parametri , il primo quale TextBox e stato selezionato , il secondo il tipo di ricerca costituito da una stringa di caratteri , nell'esempio e possibile eseguire la ricerca per Nome, Cognome e Mese .
Come detto sfruttiamo la porprietà Filter        la quale ottiene o imposta l'espressione filtro per la visualizzazione delle righe visualizzate. Si tratta in sostanza di una query Sql , ma che possiamo anche adattare alle nostre esigenze. Per finire il risultato della ricerca lo assegneremo al controllo DataGridView mediante la proprietà DataSource.
Per eseguire una ricerca bisogna semplicemente digitare nelle caselle di testo un nome , cognome o mese ed il contenuto sarà visualizzato sul controllo DtaGridView.

 

 

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) | Filed Under [ Articoli su VB.NET ]

Eseguire una ricerca su foglio Excel da C#.

A volte vi e la necessità di interagire attraverso la nostra applicazione con dei File Excel , lo scopo di questo esempio e dimostrare in che modo questo e possibile. Utilizzeremo AdoNet e precisamente il namespace OleDb utilizzato anche per la gestione di File MicrosoftAccess.

Questo esempio é stato creato con VisualStudio 2012 Update 3 , il file Excel e stato creato con la versione 2007 su sistema operativo Windows8 X64 Professional. Inoltre va creato un file excel 2007 con tre colonne denominate NOME, COGNOME E MESE , il percorso di locazione del file nell'esempio e in E:\DEMO.xlsx , qualora decideste di cambiare percorso di locazione del file su disco va modificata la stringa di connessione al file nel codice di esempio.Inoltre va scaricato ed installato il motore Access DataBaseEngine che trovate a questo link http://www.microsoft.com/it-it/download/details.aspx?id=13255

Questo namespace fornisce diverse classi che possiamo utilizzare per interagire con fonti dati provenienti da File Excel , Access e altri tipi di file.Analizziamo questa porzione di codice dove troviamo le classi OleDbConnection e OledbCommand che sono i proncipali strumenti con la quale ci connettiamo ad una fonte dati.


private DataSet _ds;
private DataTable _tb;
private BindingSource _bs;
 
        private void Form1Load(object sender, EventArgs e)
        {
                   _ds = new DataSet();
                   _tb = new DataTable();
                   _bs = new BindingSource();
 
                   var myConnection = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;data source=E:\demo.XLSx;Extended Properties=Excel 12.0;");
                   var myCommand = new OleDbDataAdapter("SELECT * FROM [Foglio1$]", myConnection);
                       myCommand.Fill(_tb);
                       _ds.Tables.Add(_tb);
                       _bs.DataSource = _ds.Tables[0];
        }


Questo codice sarà eseguito all'avvio dell'aplicazione essendo sotto l'evento load di Form1 ,  prima cosa dichiariamo un DataSet che non e altro che un contenitore con all'interno una o più tabelle (DataTable) e ci permette di poter lavorare in maniera disconnessa dalla fonte dati.
Dichiariamo un controllo DataTable formato da righe e colonne dove finiranno tutte le informazioni che andiamo a leggere dalla fonte dati , in ultimo un controllo  BindingSource ,quest'ultimo servirà per eseguire la ricerca e mostrare a video le informazioni e il risultato della ricerca.

Subito dopo mediante la classe OleDbConnection definiamo la stringa di connessione alla fonte dati , va definito il provider di dati , quest'ultimo varia a seconda delle versioni di Excel che andremo ad utilizzare , nel nostro caso essendo un file Excel 2007 , utilizzeremo il Microsoft.ACE.OLEDB.12.0 , definire poi la stringa di connessione che deve corrispondere all'esatta posizione dei file su disco , notare che se il file non viene trovato verrà generata a runtime un eccezione di tipo "File not found exception" , quindi assicurarsi che il file sia nel percorso specificato nella stringa di connessione.

Successivamente ci resta da definire la classe OledbDataAdapter, rappresenta i controlli di un set di dati e una connessione di database utilizzati per riempire un DataSet e aggiornare l'origine dati.
Per riempire un DataSet bisogna partire utilizzando il metodo Fill , questo comando si occupa di riempire il DataSet o DataTable mediante l'istruzione Select che abbiamo impostato nella query che abbiamo impostato come parametro della classe OledbDataAdapter.

A questo punto mediante il metodo Add agiungiamo una tabella al controllo DataSet e assegniamo alla proprietà DataSource del controllo BindingSource la tabella popolata con tutte le informazioni prelevate dalla fonte dati.

Terminato questo passaggio abbiamo in memoria tutti le informazioni necessarie per eseguire una ricerca. Si supponga di avere un file Excel chiamato demo.xlsx con al suo interno 3 colonne chiamate nome , cogmome e mese.

Eseguiremo la ricerca sfruttando il controllo BindingSource  , e precisamente la proprietà Filter , si prenda in considerazione questo esempio di codice.


private void TextBoxValidated(object sender, EventArgs e)
        {
            if (ReferenceEquals(sender, txtNome))
            {
                Trova((TextBox)sender, "NOME");
            }
            else if (ReferenceEquals(sender, txtCognome))
            {
                Trova((TextBox)sender, "COGNOME");
            }
            else if (ReferenceEquals(sender, txtMese))
            {
                Trova((TextBox)sender, "MESE");
            }
        }
 
        private void Trova(Control textBox, string nomeColonna)
        {
            _bs.Filter = String.Concat(nomeColonna, " ", "LIKE '", textBox.Text, "*'");
            DataGridView1.DataSource = _bs;
        }


Gestiamo gli eventi Validated dei controlli TextBox txtNome, txtCognome e txtMese , il tutto collegato ad una Sub , mediante la variabile sender andiamo a recuperare il controllo TextBox sulla quale e stato eseguito l'evento Validated , richiamando poi la Sub Trova. Questa Sub richiede due parametri , il primo quale TextBox e stato selezionato , il secondo il tipo di ricerca costituito da una stringa di caratteri , nell'esempio e possibile eseguire la ricerca per Nome, Cognome e Mese .
Come detto sfruttiamo la porprietà Filter        la quale ottiene o imposta l'espressione filtro per la visualizzazione delle righe visualizzate. Si tratta in sostanza di una query Sql , ma che possiamo anche adattare alle nostre esigenze. Per finire il risultato della ricerca lo assegneremo al controllo DataGridView mediante la proprietà DataSource.
Per eseguire una ricerca bisogna semplicemente digitare nelle caselle di testo un nome , cognome o mese ed il contenuto sarà visualizzato sul controllo DtaGridView.

 

posted @ lunedì 1 gennaio 0001 00:00 | Feedback (0) | Filed Under [ Articoli su C# ]

Powered by:
Powered By Subtext Powered By ASP.NET