Чтение файла Excel с C # - Выберите лист - PullRequest
1 голос
/ 16 мая 2010

Я читаю файл Excel с C # и OleDB (12.0).Там я должен указать оператор выбора с именем листа, который я хочу прочитать ([Sheet1$]).

this.dataAdapter = 
    new OleDbDataAdapter("SELECT * FROM [Sheet1$]", connectionString);

Можно ли выбрать первый лист, независимо от того, какое имя?

Спасибо.

1 Ответ

5 голосов
/ 16 мая 2010

См. Этот ответ о том, как получить список имен листов в следующем порядке: Использование Excel OleDb для получения имен листов В ПОРЯДКЕ ЛИСТА

А вот моя версия, которая немного короче:

public static IEnumerable<string> GetExcelSheetNames(string excelFile)
{
    var connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
          "Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
    using (var connection = new OleDbConnection(connectionString))
    {
        connection.Open();
        using (var dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null))
        {
            return (dt ?? new DataTable())
                .Rows
                .Cast<DataRow>()
                .Select(row => row["TABLE_NAME"].ToString());
        }
    }
}
...