Ошибка при попытке открыть файл Excel через ADODB.Connection
Привет, форумчане!
На днях обновили платформу до версии 8.3.10.2580
В клиент-серверной базе есть обработка, загружающая данные из excel.
Подключение к Excel идет следующим образом:
Но при попытке открыть файл выдает ошибку:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Непредвиденная ошибка драйвера внешней базы данных (1).
До обновления все работало.
Что это за сбой и как его разрешить?
Спасибо!
На днях обновили платформу до версии 8.3.10.2580
В клиент-серверной базе есть обработка, загружающая данные из excel.
Подключение к Excel идет следующим образом:
Connection = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + ПутьКФайлу;
СтрокаПодключения = СтрокаПодключения+"; Extended Properties = "+"""Excel 8.0"+"; HDR=No; IMEX=1"";";
Connection.Open(СтрокаПодключения);
Но при попытке открыть файл выдает ошибку:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Непредвиденная ошибка драйвера внешней базы данных (1).
До обновления все работало.
Что это за сбой и как его разрешить?
Спасибо!
По теме из базы знаний
Найденные решения
Не знаю, что за сбой, но у меня долго были пляски с бубном вокруг разных провайдеров для чтения из excel. То одно, то другое вылезало.
В итоге стабилизировались на таком провайдере и параметрах:
Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties="Excel 12.0; HDR=NO; IMEX=1;"
И специально устанавливаем его на серваках из этого дистрибутива:http://www.microsoft.com/en-us/download/details.aspx?id=23734
В итоге стабилизировались на таком провайдере и параметрах:
Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties="Excel 12.0; HDR=NO; IMEX=1;"
И специально устанавливаем его на серваках из этого дистрибутива:
Попробуй мой вариант:
Функция ПолучитьКоннектExcel( пИмяФайла, пВызватьИсключение = Ложь ) Экспорт
лРез = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + пИмяФайла +
"; Extended Properties = ""Excel $ver$.0;HDR=NO;IMEX=1"";";
СтрокаПодключения12 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + пИмяФайла +
"; Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"";";
СтрокаПодключенияACE = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + пИмяФайла +
";Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;""";
Попытка
лРез.Open(СтрокаПодключения12);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
Попытка
лРез.Open(СтрокаПодключенияACE);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
Для Версия = 8 По 15 Цикл
//подключение к источнику данных
ТекСтрокаПодключения = СтрЗаменить(СтрокаПодключения, "$ver$", Строка(Версия));
Попытка
лРез.Open(ТекСтрокаПодключения);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
КонецЦикла;
Если пВызватьИсключение Тогда
лТекстОшибки = ОписаниеОшибки;
лФайл = Новый Файл( пИмяФайла );
Если ВРег( лФайл.Расширение )=".XLSX" Тогда
лТекстОшибки = лТекстОшибки + Символы.ПС + "Сохраните загружаемый файл в формате MS Excel 97-2003 (*.XLS) и попробуйте выполнить загрузку снова.";
КонецЕсли;
ВызватьИсключение( лТекстОшибки );
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Показать
(9) Насколько я понимаю изначально jet - это типа майкрософтовский движок баз данных (access). Но своими библиотеками и драйверами цепляет и смежные продукты. А ACE-ом обозвали его специализированную версию для 2007 офиса. Что-то в этом духе. В текущем контексте jet - более старые дрова :)
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Непредвиденная ошибка драйвера внешней базы данных (1) - 3 бессонных ночи и исправил только путем отката обновления за номером KB4041691 (KB4041681) - может кому поможет.. Это проблема безопасности у Microsoft теперь такая чтобы свои же файлы старых версий не записывать и не считывать.. Олухи.
Не знаю, что за сбой, но у меня долго были пляски с бубном вокруг разных провайдеров для чтения из excel. То одно, то другое вылезало.
В итоге стабилизировались на таком провайдере и параметрах:
Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties="Excel 12.0; HDR=NO; IMEX=1;"
И специально устанавливаем его на серваках из этого дистрибутива:http://www.microsoft.com/en-us/download/details.aspx?id=23734
В итоге стабилизировались на таком провайдере и параметрах:
Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties="Excel 12.0; HDR=NO; IMEX=1;"
И специально устанавливаем его на серваках из этого дистрибутива:
(4) Все вроде бы решилось, де не совсем.
Хотелось бы обойтись без установки доп. проги.
Фишка в том, что на компах пользователей, где отсутствует программа AccessDatabaseEngine, подключение со строкой
работает на ура!
А на моем компе (ос windows 8.1) без этой проги ну ни в какую. Пишет:
Подскажите, где копать?
Хотелось бы обойтись без установки доп. проги.
Фишка в том, что на компах пользователей, где отсутствует программа AccessDatabaseEngine, подключение со строкой
Provider=Microsoft.ACE.OLEDB.12.0; Extended Properties="Excel 12.0; HDR=NO; IMEX=1;
работает на ура!
А на моем компе (ос windows 8.1) без этой проги ну ни в какую. Пишет:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Подскажите, где копать?
Попробуй мой вариант:
Функция ПолучитьКоннектExcel( пИмяФайла, пВызватьИсключение = Ложь ) Экспорт
лРез = Новый COMОбъект("ADODB.Connection");
СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + пИмяФайла +
"; Extended Properties = ""Excel $ver$.0;HDR=NO;IMEX=1"";";
СтрокаПодключения12 = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source = " + пИмяФайла +
"; Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=1"";";
СтрокаПодключенияACE = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " + пИмяФайла +
";Extended Properties=""Excel 12.0;HDR=NO;IMEX=1;""";
Попытка
лРез.Open(СтрокаПодключения12);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
Попытка
лРез.Open(СтрокаПодключенияACE);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
Для Версия = 8 По 15 Цикл
//подключение к источнику данных
ТекСтрокаПодключения = СтрЗаменить(СтрокаПодключения, "$ver$", Строка(Версия));
Попытка
лРез.Open(ТекСтрокаПодключения);
Возврат лРез;
Исключение
ОписаниеОшибки = ОписаниеОшибки();
КонецПопытки;
КонецЦикла;
Если пВызватьИсключение Тогда
лТекстОшибки = ОписаниеОшибки;
лФайл = Новый Файл( пИмяФайла );
Если ВРег( лФайл.Расширение )=".XLSX" Тогда
лТекстОшибки = лТекстОшибки + Символы.ПС + "Сохраните загружаемый файл в формате MS Excel 97-2003 (*.XLS) и попробуйте выполнить загрузку снова.";
КонецЕсли;
ВызватьИсключение( лТекстОшибки );
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
Показать
(5)Сергей, после обновления windows 8 даже ваша функция не работает(.
Пишет:
Все равно требует установить AccessDatabaseEngine.exe. Если установить, то работает. Но можно ли без нее обойтись?
Всю голову уже сломал(
Пишет:
Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft JET Database Engine): Невозможно найти устанавливаемый ISAM.
Все равно требует установить AccessDatabaseEngine.exe. Если установить, то работает. Но можно ли без нее обойтись?
Всю голову уже сломал(
(9) Насколько я понимаю изначально jet - это типа майкрософтовский движок баз данных (access). Но своими библиотеками и драйверами цепляет и смежные продукты. А ACE-ом обозвали его специализированную версию для 2007 офиса. Что-то в этом духе. В текущем контексте jet - более старые дрова :)
(13) С некоторых пор - да, можно. Но не всегда нормально работает. Хотя конкретных примеров сейчас не приведу. Помню, что какие-то проблемы у меня с ним были. Все собирался прямой парсинг xlsx прикрутить (благо xml), но потом плюнул за отсутствием необходимости.
Все оказалось предельно просто!
Используйте метод "прочитать". с платформы 8.3.6 работает на ура!
Не надо никаких внешних компонент и прочих "мух". Даже установка Excel не обязательна!
Вот статейка! Очень помогла
http://infostart.me/public/341855/
Используйте метод "прочитать". с платформы 8.3.6 работает на ура!
Не надо никаких внешних компонент и прочих "мух". Даже установка Excel не обязательна!
Вот статейка! Очень помогла
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот