serve per poter fare query Linq su un file di tipo Excel

va installata un libreria nella console di Visual Studio:
PM> Install-Package LinqToExcel versione 32 bit
PM> Install-Package LinqToExcel_x64 versione 64 bit
la console in Visual Studio si attiva in: Tools → NetGet Package Manager → Package Manager Console


da aggiungere il namespace
using LinqToExcel;

sintassi senza dichiarazione delle colonne cioé senza creare una classe con le proprietà di ciscun campo
var excelFile = new ExcelQueryFactory("PATH\FILE EXCEL"); creo oggetto tipo ExcelQueryFactory

var nomequery = from variabile in excelFile.Worksheet("NOME SCHEDA") creo oggetto query tipo IQueryable

where condizione

selezione finale (comando SELECT in SQL) in Linq si mette alla fine
select variabile["eventuale colonna"]; creo la query indicando la colonna
select variabile; creo la query prendendo tutto *


condizioni: si usano gli operatori relazionali e/o condizionali



sintassi con dichiarazione delle colonne creando prima una classe di dichiarazione con le proprietà di ciascun campo
public class ColonneExcel classe di dichiarazione
{

public string NomeColonna1 { get; set; }
.....
}

private static void Main()
{
var excelFile = new ExcelQueryFactory("PATH\FILE EXCEL"); creo oggetto tipo ExcelQueryFactory

var nomequery = from variabile in excelFile.Worksheet<ColonneExcel>("NOME SCHEDA") creo oggetto query tipo IQueryable<ColonneExcel>
where condizione si usa nelle condizioni variabile.NOMECAMPO (invece di variabile["NOME CAMPO"]

selezione finale (comando SELECT in SQL) in Linq si mette alla fine
select variabile.NOMECAMPO; creo la query indicando la colonna
select variabile; creo la query prendendo tutto *
}


esempio: estraggo dei dati da un file Excel fatto da Nomi e Titoli e li visualizzo in console (senza dichiarazione dei campi)
static void Main(string[] args)
{

string pathToExcelFile = @"C:\Users\Downloads\ArtistAlbums.xlsx";

var excelFile = new ExcelQueryFactory(pathToExcelFile);
var artistAlbums = from a in excelFile.Worksheet("Sheet1") select a;

foreach (var a in artistAlbums)
{
Console.WriteLine(string.Format("Artist Name: {0}; Album: {1}", a["Name"], a["Title"]));
}
}



metodi: