var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);
var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();
adapter.Fill(ds, "anyNameHere");
DataTable data = ds.Tables["anyNameHere"];
Это то, что я обычно использую.Это немного отличается, потому что я обычно воткнуть AsEnumerable() в редактировании таблиц:
var data = ds.Tables["anyNameHere"].AsEnumerable();
как это позволяет мне использовать LINQ для поиска и создания структур из полей.
var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
new MyContact
{
firstName= x.Field<string>("First Name"),
lastName = x.Field<string>("Last Name"),
phoneNumber =x.Field<string>("Phone Number"),
});
Если кажется, что в этом подходе «Выбор» пытается угадать тип данных столбца и заставить его угадать тип данных. Например, если у вас есть столбец с преимущественно двойными значениями, вам не понравится передача x.Field, но ожидает x.Field . Это правда? –
2010-06-03 14:47:12