C'è la possibilità di utilizzare OleDB
e utilizzare i fogli di Excel come DataTable in un database ...
Solo un esempio .....
string con =
@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\temp\test.xls;" +
@"Extended Properties='Excel 8.0;HDR=Yes;'";
using(OleDbConnection connection = new OleDbConnection(con))
{
connection.Open();
OleDbCommand command = new OleDbCommand("select * from [Sheet1$]", connection);
using(OleDbDataReader dr = command.ExecuteReader())
{
while(dr.Read())
{
var row1Col0 = dr[0];
Console.WriteLine(row1Col0);
}
}
}
questo esempio utilizzare il provider Microsoft.Jet.OleDb.4.0
a apri e leggi il file di Excel. Tuttavia, se il file è di tipo xlsx (da Excel 2007 e versioni successive), è necessario scaricare i componenti Microsoft Access Database Engine e installarlo sul computer di destinazione.
Il fornitore si chiama Microsoft.ACE.OLEDB.12.0;
. Presta attenzione al fatto che ci sono due versioni di questo componente, uno per 32 bit e uno per 64 bit. Scegliere quello appropriato per il controllo della propria applicazione e quale versione di Office è installata (se presente). Ci sono un sacco di stranezze per far funzionare correttamente quel driver per la tua applicazione. See this question for example.
Naturalmente non è necessario Office installata sul computer di destinazione.
Mentre questo approccio ha alcuni meriti, penso che dovresti prestare particolare attenzione al link segnalato da un commento nella tua domanda Reading excel files from C#. Ci sono alcuni problemi riguardo all'interpretazione corretta dei tipi di dati e quando la lunghezza dei dati, presente in una singola cella Excel, supera i 255 caratteri
OleDB o salvarlo come file CSV (come suggerito da Robert Harvey di seguito). – Tim
per OleDB, dobbiamo avere ms excel installato nella macchina, giusto ?? – TutuGeorge
La conversione di excel in csv tramite codice può essere eseguita anche se non abbiamo installato ms excel ??? – TutuGeorge