Получить имена листов в книге Excel95 с помощью OleDB - PullRequest
0 голосов
/ 11 февраля 2010

У меня проблемы с использованием поставщика Jet и OleDb для получения имен листов в книге Excel95.

У меня есть рабочая тетрадь с 3 листами, Sheet1, Sheet2, Sheet3. Я использую следующий код для извлечения имени листа:

var connectionString =
String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"", filePath);

using (var connection = new OleDbConnection(connectionString))
{
    connection.Open();
    var dtXlsSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);        
}

В итоге возвращается таблица данных, содержащая только одну запись, для Sheet1. Я предполагаю, что что-то не так со строкой соединения?

Ответы [ 2 ]

2 голосов
/ 11 февраля 2010

Согласно этой странице , используйте Excel 5.0 вместо Excel 8.0 в строке подключения.

Это помогает?

РЕДАКТИРОВАТЬ:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 5.0;HDR=YES;IMEX=1\"", filePath);

EDIT2:

Версия Excel: укажите Excel 5.0 для книги Excel 95 (версия 7.0). Excel) и Excel 8.0 для Excel 97, Excel 2000 или Excel 2002 (XP) рабочая книга (версии 8.0, 9.0 и 10.0 Excel).

0 голосов
/ 11 февраля 2010

OleDb не будет знать о пустых листах.

Пока на листах есть какие-то данные, вы должны получить их имена.

...