PDA

View Full Version : [c#,excel]


ohi
10-09-2010, 10:01
Ciao volevo chiedervi come posso fare per leggere i dati da un file excel, leggendo in giro ho ottenuto questo:


private void Prova()
{
string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\\Prova.xls;Extended Properties=""Excel 12.0;HDR=YES;""";

OleDbConnection excelConnection = new OleDbConnection(connectionString); //Rappresenta una connessione aperta a un'origine dati.

string strSQL = "SELECT* FROM [Foglio1$]";

OleDbCommand dbCommand = new OleDbCommand(strSQL, excelConnection);

try
{
excelConnection.Open(); // This code will open excel file.

OleDbDataReader reader = dbCommand.ExecuteReader();
while (reader.Read())
{
MessageBox.Show(reader.ToString());
}
reader.Close();
}
catch(Exception exe)
{
MessageBox.Show(exe.Message.ToString());
}

dbCommand.Dispose();



excelConnection.Close();

excelConnection.Dispose();
}

Ho creato per effettuare una prova il file Prova.xls e nel Foglio1 uno ho riempito qualche campo in modo casuale (Ho dovuto compilare a 32 per ovviare ad altri problemi). Il problema mi si presenta OleDbDataReader reader = dbCommand.ExecuteReader(); Mi dice che non trova l'oggetto Foglio1$, :help:

sneeze
10-09-2010, 12:37
fossi in te userei i vsto già presenti in vs e non farei connessioni dati...
In giro trovi molto su come usarli

ohi
10-09-2010, 18:58
Grazie per il suggerimento ho dato un occhiata in giro ho trovato molta roba, troppa, così ho un pò di confusione, io ho un file esterno excel la sola cosa che voglio fare è leggere i dati tramite sql(senza modificarlo), lo posso fare tramite Workbook?

sneeze
10-09-2010, 19:16
si puoi leggere i dati aprendo il file come workbook.
non so se puoi schiantarci dentro query sql. dovrei fare delle prove purtroppo non ho tempo. di certo puoi usare query linq

ohi
12-09-2010, 11:32
grazie mille per i suggerimento però ho un piccolo problema:

Ho fatto una prova con il seguente problema

int[] numeri = { 1, 2, 3, 4, 5 };

var numeriPari = from n in numeri where (n % 2 == 0) select n;

foreach (var item in numeriPari)
Console.WriteLine("{0}", item);

Errore Impossibile trovare un'implementazione del modello di query per il tipo di origine 'int[]'. 'Where' non trovato. Manca il riferimento a 'System.Core.dll' o la direttiva using per 'System.Linq'.

Ho aggiunto using System.Linq; ma lo segnala come errore, tra i riferimenti da aggiungere non l'ho trovato :cry:

sneeze
12-09-2010, 12:27
che versione del framewrok stai usando?

ohi
12-09-2010, 12:39
che versione del framewrok stai usando?
:doh: Grazie ho risolto :D