Project: Excel.OleDb

Get schema and data of an Excel worksheet using OleDb:
void Main()
{
	var stringBuilder = new OleDbConnectionStringBuilder();
	stringBuilder.Provider = "Microsoft.Jet.OLEDB.4.0";
	stringBuilder.DataSource = @"file.xls";
	stringBuilder.Add("Extended Properties", "Excel 8.0;HDR=Yes;IMEX=1");
	
	using (var connection = new OleDbConnection(stringBuilder.ToString().Dump()))
	{
		connection.Open();
		var schemaTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] {null, null, null, "TABLE"});
		var sheetName = schemaTable.AsEnumerable().Select(row => row.Field<string>("TABLE_NAME")).First();
		schemaTable.Dump();
	
		using (var command = new OleDbDataAdapter(string.Format("select * from [{0}]", sheetName), connection))
		{
			var dataSet = new DataSet();
			command.Fill(dataSet, sheetName);
			dataSet.Dump();
		}
	}
}