2010-08-20 2 views
10

Я пытаюсь прочитать электронные таблицы Excel с 64-битным процессом. Поэтому я использую 64-разрядную версию Micorosft Access Database Engine 2010.Microsoft ACE OLEDB поставщик бросков не смог найти устанавливаемое исключение ISAM

Следующего код

var cs = @"Provider=Microsoft.ACE.OLEDB.12.0;" 
     + @"Data Source=C:\test.xls;" 
     + @"Extended Properties=""Excel 14.0;"""); 

con = new OleDbConnection(cs); 
con.Open(); 

выбросить исключение:

Не удался найти устанавливаемый ISAM

С помощью Google я нашел много вопросов по поводу этого исключения. Но они относятся к JET и, похоже, не относятся к моей проблеме.

Любые рекомендации?

+1

Вы когда-нибудь находили решение? У меня такая же проблема. – PICyourBrain

+0

Я пока не нашел решение. –

+0

SELECT * FROM OPENROWSET ('MSDASQL', \t 'DRIVER = Драйвер Microsoft Excel (* .xls, * .xlsx, * .xlsm, * .xlsb); DBQ = D: \ SampleOffice2007.xlsx', 'SELECT * FROM [Драйверы $] ') –

ответ

1

Сегодня я столкнулся с той же проблемой. Моя конфигурация:

  • x64 .NET 2.0 Настольное приложение, которое считывает файл XLSX.
  • x64 версии Microsoft Access Database Engine 2010 Redistributable
  • Моя строка соединения включены Extended Properties атрибут со значением «Excel 14,0;», как documentation из компонента читает.

У меня был точно такой же проблема, у вас есть: Не удался найти устанавливаемый ISAM исключения. Я решил это после того, как я наткнулся на this article, в котором говорится, что есть ошибка в документации компонента на сайте MS. Я не уверен, что документация компонента неточна, я могу сказать, что изменение . Дополнительные свойства - Excel 12.0 Xml решил проблему.

1

У меня была такая же проблема, пытаясь получить данные из файла Excel .xlsx.

Обычно надежные драйверы «Microsoft.ACE.OLEDB.12.0» просто отказались подключиться, выбрасывая ту же самую «Не удалось найти устанавливаемую ISAM», которую вы видели.

В конце концов, я нашел этот код, который работал:

SELECT * FROM OPENROWSET('MSDASQL', 
    'DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb); 
    DBQ=D:\Sample.xlsx', 'SELECT * FROM [Sheet1$]') 

Надеется, что это помогает!

(адаптировано из окончательного размещения в этой теме: SQLTeam.com)

Чуть позже ...

Теперь, вдруг, моя оригинальная строка подключения является работает. Раньше это было неудачно (до того, как я успешно соединился с использованием строки MSDASQL выше), но теперь работает успешно.

SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 
    'Excel 12.0;Database=D:\Sample.xlsx;HDR=NO;IMEX=1', 
    'SELECT * FROM [Sheet1$]') 

Нечетный, очень странный.

1

После добавления кавычек в строку подключения ошибка ISAM исчезла (код ниже).

string GetConnectionString(string fileName) 
{ 
    return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=YES;\""; 
} 
1

Я нашел установку 2013 года с превосходными инструментами и сохранением прежних версий. Затем выполните пользовательскую установку ... затем откройте 2013 excel и закройте ее. Затем перейдите в панель управления и добавьте функции удаления, удаляющие excel с 2013 года. Затем откройте 2010 excel и дайте ей быстро обновить свою установку, а затем она работает без ошибок.

0

Ссылка на «This Article» верна, однако изменение одинарных кавычек на двойные кавычки. Я использую OpenFileDialog для получения любого файла excel. (Я использую Excel 2013 для тестирования)

=> Исходный формат в пост < =
// Новые версии, любой файл XLS «Provider = Microsoft.ACE.OLEDB.12.0; Data Source = 'C : \ AlmostAnyExcelVersionFileRunningUnder64BitOS.xls '; Расширенные свойства =' Excel 12.0; HDR = NO; IMEX = 1; '; "

=> Исправленный Формат < =
XLConnection = "Provider = Microsoft.ACE.OLEDB.12.0; источник данных =" & Chr (34) & ExceilFileDialog.FileName & Chr (34) & "; Extended Properties =" & Chr (34) & "Excel 12.0; HDR = NO; IMEX = 1;" & Chr (34) & ";"