TechNet
Products
IT Resources
Downloads
Training
Support
Products
Windows
Windows Server
System Center
Microsoft Edge
Office
Office 365
Exchange Server
SQL Server
SharePoint Products
Skype for Business
See all products »
Resources
Channel 9 Video
Evaluation Center
Learning Resources
Microsoft Tech Companion App
Microsoft Technical Communities
Microsoft Virtual Academy
Script Center
Server and Tools Blogs
TechNet Blogs
TechNet Flash Newsletter
TechNet Gallery
TechNet Library
TechNet Magazine
TechNet Wiki
Windows Sysinternals
Virtual Labs
Solutions
Networking
Cloud and Datacenter
Security
Virtualization
Updates
Service Packs
Security Bulletins
Windows Update
Trials
Windows Server 2016
System Center 2016
Windows 10 Enterprise
SQL Server 2016
See all trials »
Related Sites
Microsoft Download Center
Microsoft Evaluation Center
Drivers
Windows Sysinternals
TechNet Gallery
Training
Expert-led, virtual classes
Training Catalog
Class Locator
Microsoft Virtual Academy
Free Windows Server 2012 courses
Free Windows 8 courses
SQL Server training
Microsoft Official Courses On-Demand
Certifications
Certification overview
Special offers
MCSE Cloud Platform and Infrastructure
MCSE: Mobility
MCSE: Data Management and Analytics
MCSE Productivity
Other resources
Microsoft Events
Exam Replay
Born To Learn blog
Find technical communities in your area
Azure training
Official Practice Tests
Support options
For business
For developers
For IT professionals
For technical support
Support offerings
More support
Microsoft Premier Online
TechNet Forums
MSDN Forums
Security Bulletins & Advisories
Not an IT pro?
Microsoft Customer Support
Microsoft Community Forums
Sign in
Home
Library
Wiki
Learn
Gallery
Downloads
Support
Forums
Blogs
Resources For IT Professionals
United States (English)
Россия (Pусский)
中国(简体中文)
Brasil (Português)
Skip to locale bar
Post an article
Translate this page
Powered by
Microsoft® Translator
Wikis - Page Details
First published by
Carmelo La Monica
When:
5 Jul 2013 4:04 PM
Last revision by
Carmelo La Monica
When:
5 Aug 2013 2:34 PM
Revisions:
4
Comments:
0
Options
Subscribe to Article (RSS)
Share this
Can You Improve This Article?
Positively!
Click Sign In to add the tip, solution, correction or comment that will help other users.
Report inappropriate content using
these instructions
.
Wiki
>
TechNet Articles
>
C# Eseguire una ricerca su foglio Excel da C#.(it-IT)
C# Eseguire una ricerca su foglio Excel da C#.(it-IT)
Article
History
C# Eseguire una ricerca su foglio Excel da C#.(it-IT)
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 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 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 come immagine seguente.
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 , per cui se inseriamo il nome Carmelo e ci spostiamo su un altro controllo TextBox avremo questa situazione.
Qui di seguito il codice completo .
using System;
using System.Data;
using System.Windows.Forms;
using System.Data.OleDb;
namespace ExcelTextCS
{
public partial class Form1 : Form
{
private DataSet _ds;
private DataTable _tb;
private BindingSource _bs;
public Form1()
{
InitializeComponent();
}
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];
}
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;
}
}
}
C# .NET
,
Carmelo La Monica
,
MICROSOFT EXCEL 2007
[Edit tags]
Leave a Comment
Please add 3 and 8 and type the answer here:
Post
Wiki - Revision Comment List(Revision Comment)
Wikis - Comment List