Leyendo múltiples hojas de Excel con diferentes nombres de hojas de trabajo

Me gustaría saber cómo puedo leer la hoja de cálculo de Excel con diferentes nombres de hojas de cálculo en c # y con el uso de oledb.

Tengo esta forma existente de leer varias hojas (pero con el nombre fijo de la hoja de trabajo):

DataSet ds = new DataSet();
var excelConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0", path); 
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = excelConnectionString;

var i = 1;
while (i <= 4)
{
    string query = "SELECT * FROM [Sheet" + i + "$]";
    ds.Clear();
    OleDbDataAdapter data = new OleDbDataAdapter(query, connection);
    data.Fill(ds);

    // other stuff
    i = i + 1;
}

Este funciona Pero ahora estoy en una situación diferente en la que los nombres de las hojas de trabajo no son fijos, por ejemplo: Sheet1 es Dog, Sheet2 es Cat Sheet3 es Bird.

Ahora mi preocupación es cómo puedo hacer un bucle en esos nombres de hoja de trabajo con el uso de mi código existente.

Respuestas a la pregunta(1)

Su respuesta a la pregunta