Я использую ASP.NET для открытия документа Excel 2003, размещенного на сервере. Электронная таблица Excel, созданная системой, находящейся вне моего контроля, имеет 5 рабочих таблиц. Я получаю доступ к данным на каждом листе следующим образом (разрывы строк добавлены для удобства чтения):
string ExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\sample.xls;
Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\";";
OleDbDataAdapter myData =
new OleDbDataAdapter("SELECT * FROM [mysheet]", ExcelConn);
myData.TableMappings.Add("Table", "mysheet");
myData.Fill(ExcelDS);
Это работает для 3 из 5 листов. Два других выдают эту ошибку:
ядро базы данных Microsoft Jet
не удалось найти объект «mysheet».
Убедитесь, что объект существует и что
вы пишете его имя и путь
правильно.
Я четыре раза проверил имя листа, проверив текст на нижней вкладке, а также проверив конец строки, полученной в Excel:
=CELL("filename")
c:\[sample.xls]mysheet
Строка подключения указывается один раз и используется повторно для всех 5 листов.
Возможно ли, что мне нужно ссылаться на лист строкой, которая не соответствует имени, которое видно в Excel? Может быть, скрытые символы, пробелы и т. Д.? Есть ли другой способ найти истинное имя листа? Любые другие предложения для получения этих данных?
Примечание: я не могу изменить документ Excel (я бы использовал SSIS для импорта CSV, если бы мог иметь его по-своему).
Я использую .NET 3.5 / II6.