ADO + xlsx + Win Server 2008 r2 x64 = бедаааа #667928


#0 by bacila
Потратил я 3 дня и 3 ночи в попытках устранить трабл,а трабл в общем такой , надо загружать файлы экселевские, локально на ноутбуке все работает, но при при переносе на клиент - серверный вариант  работать перестает (вернее загружает только xls а на xlsx валится при открытии) выдавая следующую ошибку:   {ОбщийМодуль.ЧтениеИзЭкселя.Модуль}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Access Database Engine): External table is not in the expected format. причем прошу заметить что accessdatabaseengine2010x64 я ставил, accessdatabaseengine2007 я тоже ставил собственно сам код: Функция ПарсингЭкселя(пФайл,Знач ПроверочныйСтолбец = 1, СтруктураКолонок = Неопределено, Знач НачСтрока = 2, Знач КонСтрока = 0) Экспорт     Помогите кто чем может, реально уже утомился.....
#1 by Stormicon
Extended Properties="Excel 12.0 Xml;HDR=YES
#2 by Stormicon
Поменяй во-первых опции, а во-вторых, провайдер прописан в х64 консоли или х86 ?
#3 by Stormicon
microsoft.com/en-us/download/details.aspx?id=13255 - надеюсь стоит? там же на страничке указаны Extended Properties для xlsx.
#4 by bacila
на ноуте и xls и xlsx грузит, на серваке только xls  с такими параметрами. microsoft.com/en-us/download/details.aspx?id=13255 да стоит не понял про консоль
#5 by bacila
зачем мне заголовки включать?
#6 by Serginio1
#7 by bacila
там задача решилась снеся 1 эксель установив другой, у меня эксель там вообще не стоит, и xls у меня читает , а xlsx нет.
#8 by Gammi
используй разные строки подключения на сервере и на ноутбуке. Найди нужную для 64-х сервера
#9 by Serginio1
Ты плохо читал. Для работы в 64 разрядном приложении тебе нужно учтановить Microsoft Access Database Engine 2010 Redistributable Предварительно снеся все что относится к 32 разрядному офису. В том числе и 32 разрядный Microsoft Access Database Engine 2010 Redistributable Две версии драйверов стоять не могут. По ссылке чел установил 64  Microsoft Access Database Engine 2010 Redistributable и поставил сверзу офис 2003.
#10 by Serginio1
На клиенте тебе нужно ставить 32 разрядный вариант. Два варианта драйверов 32 и 64 разрядных не живут
#11 by bacila
я все так и сделал на клиенте мне вообще зачем драйвер, все делается на сервере
#12 by Serginio1
У тебя 1С сервер 32 разрядный?
#13 by Serginio1
А пути то у тебя правильные. Если доходит до Connection.Open;  у тебя проблема с путями. Учти что ты выполняешь код на сервере и пути должны быть относительно него и права доступа
#14 by Serginio1
Посмотри
#15 by Serginio1
Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
#16 by Serginio1
Я установил пакет MSXML 6.0 на Win 2003 Server и что сделали свое дело.
#17 by bacila
сервер x64 посмотри код внимательнее, я получаю файл в двоичном виде  сохраняю его на сервере и потом с ним работаю MSXML 6.0  тоже ставил говорю же уже уйму вариантов перепробовал
#18 by bacila
читаю, букв много ))
#19 by Serginio1
ЭлектронныеДокументыСлужебный.ТекущееИмяВременногоФайла; На каталог есть параметры ЭксельЦентр управления безопасностьюНадежные расположения
#20 by Serginio1
Там расположение по ключам должно быть  Office14 ACEOLEDB.DLL Вы должны быть в состоянии решить эту проблему, выполнив ремонт установке офисного или Access. Кроме того, можно изменить раздел реестра изменения DLL путь, чтобы соответствовать вашей версии Access. Access 2007 следует использовать OFFICE12, Access 2010 - Office14 и доступе 2013 - OFFICE15 (ОС: 64bit офис: 64bit) или (ОС: 32bit офис: 32bit) Данные значения: C: Program Files Common Files Microsoft Shared Office14 ACEOLEDB.DLL Данные значения: C: Program Files (x86) Common Files Microsoft Shared Office14 ACEOLEDB.DLL
#21 by bacila
ну я так и понял примерно, спасибо , за последнее время это реально какая то новая инфа и вариант.
#22 by Serginio1
Еще при записи в xlsx  нужно  явно указать Extended Properties=Excel 12.0 Xml; может и для чтения поможет
#23 by bacila
только я чет не совсем понял, как в итоге то должно быть если  уменя 1с сервер x64 и odbc  драйве x 64
#24 by bacila
я не записываю, а локально при чтении (на ноуте) когда писа xml  отказывалось читать
#25 by Serginio1
Должен быть C: Program Files Common Files Microsoft Shared Office14 ACEOLEDB.DLL
#26 by bacila
у меня нет таких веток НО нашел такой раздел HKEY_CLASSES_ROOTMicrosoft.ACE.OLEDB.12.0CLSID  где как раз указан этот ключ
#27 by bacila
{3BE786A0-0366-4F5C-9434-25CF162E475E}
#28 by bacila
может просто самому создать?
#29 by Serginio1
Тебе нужен Найди где у тебя ACEOLEDB.DLL и если там не Office14 переделай на Office14 соответственно папка такая должна бытью Ил просто удали и заного установи драйвер отсюда
#30 by bacila
да я его уже раз 5 переустанавливал, именно этот
#31 by bacila
HKEY_CLASSES_ROOTCLSID{3BE786A0-0366-4F5C-9434-25CF162E475E}InprocServer32   =  C:Program FilesCommon FilesMicrosoft SharedOFFICE14ACEOLEDB.DLL вот нашел :(
#32 by Serginio1
То есть ключ правильный? А просто файл экселем то открывается? Проверь на загрузку заведомо валидного файла
#33 by bacila
ну на другой машине открывается, да и я не один файл пробовал
#34 by Serginio1
Я про то что вместо попробовать. ИмяФайла=ВПутьКВалидномуФайлу;
#35 by bacila
Решил я забить пока что на это, надоело
#36 by Reaper_1c
xlsx - это zip с нулевым сжатием набитый XML-ками. Уже сто лет в интенетах лежат готовые обработки для работы с ним без всяких ADO, COM и прочего...
#37 by bacila
метод нужен универсальный для чтения любых экселей
#38 by bacila
Задача решена, добавлены в ручную соответсвующие ветки из 20 ого поста, и все заработало   Serginio1-у  большое спасибо за то что натолкнул на мысль, хоть и не напрямую
#39 by bacila
теперь другая проблема, xlsx загружается без лидирующих нулей
#40 by Jaap Vduul
Это, скорее всего, просто форматирование соответствующее в ячейках. Так что просто форматируй аналогичным образом.
#41 by bacila
ну 1с так сохраняет , криво как то в каком то неведомом формате
#42 by bacila
когда ставишь у ячейки формат текст 0 исчезают в экселе, в итоге фигня получается
#43 by bacila
потому что эти нули нужны
#44 by Jaap Vduul
Имелось в виду форматировать уже на стороне 1цэ, ну или в момент выборки, в запросе.
#45 by Serginio1
А ты в 1С поставь ф ячейке содержит значение и тип значения строка
#46 by bacila
да я то не сохраняю из 1с, это всякие прайсы и тд, которые присылают контрагенты
#47 by bacila
причем когда до этого делал загрузку локально на ноуте, нули загружались, но в данный момент уже радостно что на серваке хоть как то работает
#48 by romansun
лидирующие нули в экселе
#49 by Serginio1
#50 by Serginio1
АДОЗапись.Open("Select ''+F1 as A from ["+ИмяЛиста+"$]"); Где F1 это первая колонка A '' должен указать, что строка. С кастами у меня не получилось
#51 by Serginio1
Кстати из соседней ветки
#52 by Eugeneer
Можете не долбится даже. Все решено от и до включая работы всех форматов во всех режимах 1С - тонкий, толстый, вэб-клиент, Линус и вин сервера 32/64. И так далее. Все проблемы с лидирующими нулями и прочими гемморами, включая файлы с кривыми символами и так далее и так далее
#53 by Eugeneer
Адо не будет работать нормально - уже прожевано на протяжении 4 лет.
#54 by Serginio1
Да нет вариант АДОЗапись.Open("Select ''+F1 as A from ["+ИмяЛиста+"$]"); Читает ведущие нули где '' это пара одинарных ковычек
#55 by bacila
да беда в том что читает то он как текст, а 1с сохраняет в каком то смешенном формате,  проблема в драйверах , мучаться не захотелось, все читаю в базе и загружаю убирая лидирующие нули там где они есть,чтоб привести к одному формату, а то мучаться времени нет
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С