Use a DataAdapter and it will fill it automatically:
string cmdString = string.Format("Select * from [{0}]", sheetName);
OleDbCommand cmd = new OleDbCommand(cmdString);
cmd.Connection = connection;
OleDbDataAdapter adapter = new OleDbDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
DataTable datatable = dataset.Tables[0];
See also the documentation at
OleDbDataReader.Read Method (System.Data.OleDb) | Microsoft Docs[
^].