|   |   | 
| 
 | Открыть Excel через ADODB в 1С х64 | ☑ | ||
|---|---|---|---|---|
| 0
    
        LevelUP 02.02.17✎ 12:43 | 
        Здравствуйте.
 Раньше в х32 1С открывал Excel таким кодом Стр_Конект = "Driver={Microsoft Excel Driver (*.xls)}; |DriverId=790; |Dbq="+Стр_Файл+"; |DefaultDir="+Стр_Путь+";"; Об_Конект = Новый COMОбъект("ADODB.Connection"); Попытка Об_Конект.Open(Стр_Конект); Исключение Сообщить ("Невозможно подключится к Microsoft Excel Driver!!! |Возможно файл ["+Стр_Файл+"] открыт другим пользователем."); Возврат; КонецПопытки; Теперь выдает ошибку на этапе Об_Конект.Open(Стр_Конект); Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Excel] Файл '(нет данных)' не может быть открыт ядром базы данных Microsoft Jet. Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных. Куда копать? Что подправить в строке коннекта? | |||
| 1
    
        shuhard 02.02.17✎ 13:10 | 
        (0) ODBC тут лишнее
 MyCon = Новый COMОбъект ("ADODB.Connection"); Попытка MyCon.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ОБъект.ПутьКфайламБюджета+";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1;"""); Исключение Сообщить("Не удалось открыть файл->"+ОБъект.ПутьКфайламБюджета+" Проверьте путь и тип файла"); Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке())); Возврат; КонецПопытки; | |||
| 2
    
        LevelUP 02.02.17✎ 13:46 | 
        (1)Спасибо. На х32 код работает, а на х64 нет.
 Ругается Произошла исключительная ситуация (Microsoft OLE DB Service Components): Заглушке переданы неправильные данные. Может что-то кроме Microsoft.ACE.OLEDB.12.0 надо в com+ прописать? | |||
| 3
    
        NorthWind 02.02.17✎ 13:51 | 
        (2) а драйвер ACE х64 скачан и установлен?     | |||
| 4
    
        LevelUP 02.02.17✎ 13:53 | 
        (3) я в службе компонентов его com+ сопоставил по типу Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С. Без этого ругался на Provider=Microsoft.ACE.OLEDB.12.0.
 Теперь вот на заглушку | |||
| 5
    
        aka AMIGO 02.02.17✎ 14:14 | 
        Извините, а в файловом варианте эта штука не работает?     | |||
| 6
    
        LevelUP 02.02.17✎ 14:16 | 
        (5) у меня файловый вариант как раз     | |||
| 7
    
        aka AMIGO 02.02.17✎ 14:20 | 
        (6) У меня как раз 64.
 Попробовал и я, тоже не срабатывает. Причина другая. Сообщений 2: Не удалось открыть файл->C:\DB\Азы\ExtReps\PL VAP FY17.xlsx Проверьте путь и тип файла Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно. Но у меня нет ACE | |||
| 8
    
        aka AMIGO 02.02.17✎ 14:22 | 
        (6) может тебе поможет: http://www.cyberforum.ru/ado-net/thread125575.html
 Я в этом плаваю по-топорному. | |||
| 9
    
        aka AMIGO 02.02.17✎ 14:28 | 
        (0) чем вызвана необходимость использовать этот "Driver" ?
 Нет Excel"я ? | |||
| 10
    
        LevelUP 02.02.17✎ 14:29 | 
        (8) ну драйвер похоже ставить надо Microsoft.ACE.OLEDB.12.0 х64. Но для этого надо офис снести х32, неохота.
 Через обертку com+ избавился от ошибки "поставщика". Но появились другие. | |||
| 11
    
        aka AMIGO 02.02.17✎ 14:30 | 
        (10) Понял..     | |||
| 12
    
        LevelUP 02.02.17✎ 14:30 | 
        (9) Да, изначально у заказчика не было Екселя. Но сейчас уже есть, поэтому переписываю обработку под Excel.application     | |||
| 13
    
        aka AMIGO 02.02.17✎ 14:41 | 
        А так не пойдёт? Поскольку Excel установлен..
 Попытка Excel = Новый COMОбъект("Excel.Application"); Исключение Сообщить("Не найден Microfoft Excel."); Возврат Ложь; КонецПопытки; Попытка WorkBook = Excel.WorkBooks.Open(ФайлExcel ); Исключение Сообщить("Excel не удалось открыть файл " + ФайлExcel ); Возврат Ложь; КонецПопытки; ТекЛист=Excel.WorkSheets(1); ... | |||
| 14
    
        aka AMIGO 02.02.17✎ 14:42 | 
        +13 или ты под это и пишешь?     | |||
| 15
    
        DailyLookingOnA Sunse 02.02.17✎ 14:49 | 
        Платформа какая?
 С 8.3.6 уже можно этим пользоваться: ДанныеФайлаТабличныйДокумент = Новый ТабличныйДокумент; ДанныеФайлаТабличныйДокумент.Прочитать(ИмяВремФайла); | |||
| 16
    
        LevelUP 02.02.17✎ 14:57 | 
        (13) да, так и переписываю. Подумал, что быстрее переписать, чем разбираться с ADO.     | |||
| 17
    
        LevelUP 02.02.17✎ 15:01 | 
        (15)платформа 8.3.9 х64. Хороший способ, надо попробовать, без всяких COM и определений количества строк и колонок. Спасибо!     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |