AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.08.2011, 15:22   #61  
niksen is offline
niksen
Участник
Самостоятельные клиенты AX
 
284 / 28 (1) +++
Регистрация: 05.07.2011
Адрес: Татарстан
а у меня не заработало, все исправления, которые есть использовал, всё равно не хочет нормально работать
использовал вот этот job
X++:
static void CorrectADOFileImport(Args _args)
{
    ExcelImportADO   excel;
    Counter                 fieldCount;
    Counter                 curField;
    FileNameOpen            fileName;
    COM adoxCatalog = new COM(@"ADOX.Catalog");
    COM Tables;
    COM Table;
    COM Columns;
    COM Column;
    int i;
    ;
    filename = WinAPI::getOpenFileName(infolog.hWnd(), ["Microsoft Excel","*.xls"], '', "Выберите файл");
    if (!filename)
        throw error("@SYS26757");
    excel = new ExcelImportADO(fileName);
    if (excel.openFile())
    {
        fieldCount = excel.getFieldsCount();

        adoxCatalog.ActiveConnection(excel.getConnection());
        Tables   = adoxCatalog.Tables();
        Table = Tables.Item(0);
        if (Table)
        {
            Columns = Table.Columns();
            for (i=0;i<Columns.Count();i++)
            {
                Column = Columns.Item(i);
                if (Column)
                    info(Column.Name());
            }
            box::info(int2str(fieldCount));
            while (!excel.eof())
            {
                info(excel.getFieldValue(1, true));
                info(excel.getFieldValue(2, true));
                info(excel.getFieldValue(3, true));
                info(excel.getFieldValue(4, true));
                info(excel.getFieldValue(5, true));
                for (curField = 6; curField < fieldCount; curField++)
                {
                    info(excel.getFieldValue(curField, true));
                }
                return; //только первую строку
                //excel.moveNext();
            }
        }
    }
}
вместе с файлом импорт.xls, который выложил propeller.
пробегая дебаггером заметил, что он даже не читает его, вылетая вот с этой ошибкой
Цитата:
Метод "Open" в COM-объекте класса "ADODB.Recordset" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Недопустимое имя '0$'. Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.
может кто-нибудь выгрузит полностью готовый рабочий класс и job к нему?
p.s. dax 2009, строка в declaration
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=No;FirstRowHasNames=0;IMEX=1'"

p.p.s. а так хочется использовать этот класс для того, чтобы записывать данные в таблицы через классы Ax типа AxInventTable и им подобные
хочу сам немного доработать этот класс, чтобы в первой ячейка например указывалась таблица, в которую вставлялись поля, а дальше список полей во второй строке, после чего строчки с данными. Думаю тогда импорт через стандартные группы определений Excel сам собой бы отпал с его низкой скоростью.

Последний раз редактировалось niksen; 12.08.2011 в 16:48.
Старый 16.08.2011, 08:22   #62  
niksen is offline
niksen
Участник
Самостоятельные клиенты AX
 
284 / 28 (1) +++
Регистрация: 05.07.2011
Адрес: Татарстан
неужели ни у кого нет этого класса в своих проектах...?
Старый 16.08.2011, 09:56   #63  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от niksen Посмотреть сообщение
неужели ни у кого нет этого класса в своих проектах...?
Рекомендации - Как правильно задать вопрос, чтобы быть услышанным
__________________
полезное на axForum, github, vk, coub.
За это сообщение автора поблагодарили: niksen (1).
Старый 16.08.2011, 13:03   #64  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от niksen Посмотреть сообщение
а у меня не заработало
...
может кто-нибудь выгрузит полностью готовый рабочий класс и job к нему?
p.s. dax 2009, строка в declaration
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=No;FirstRowHasNames=0;IMEX=1'"
в этой ветке на аксфоруме полностью готовый и работоспособный класс. проверено.

лучше расскажите:
= какой версией excel пользуетесь.
= файл какой версии загружаете.
= содержатся ли макросы в файле
= включена ли защита от макросов в экселе

см. также обсуждение про xlsx в этой ветке.
вопрос: ответ 1 и ответ 2.
__________________
полезное на axForum, github, vk, coub.
Старый 16.08.2011, 13:32   #65  
niksen is offline
niksen
Участник
Самостоятельные клиенты AX
 
284 / 28 (1) +++
Регистрация: 05.07.2011
Адрес: Татарстан
1)версия excel 2010 64хбитная, пробовал менять строку провайдера для версии офиса, в разных комбинациях класс всегда выдавал ошибку.
2)файл загружаю xls, пробовал и xlsx с разными комбинациями офиса и 2007 и 2010 и 2003
3)макросов в файле нет
4)защита от макросов выключена
Старый 16.08.2011, 14:57   #66  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от niksen Посмотреть сообщение
1)версия excel 2010 64хбитная, пробовал менять строку провайдера для версии офиса, в разных комбинациях класс всегда выдавал ошибку.
2)файл загружаю xls, пробовал и xlsx с разными комбинациями офиса и 2007 и 2010 и 2003
3)макросов в файле нет
4)защита от макросов выключена
должон работать.
можете выложить файл, который не испортируется и ваш код - постараемся провериьт.

файл лучше не с реальными данными, а с сильно урезанными и случайными. но обязательно чтобы у вас импорт не работал.

Хинт: у вас внутри файла нигде объединения ячеек нет?
__________________
полезное на axForum, github, vk, coub.
Старый 16.08.2011, 15:54   #67  
niksen is offline
niksen
Участник
Самостоятельные клиенты AX
 
284 / 28 (1) +++
Регистрация: 05.07.2011
Адрес: Татарстан
вот кстати объединение ячеек есть в моём файле...
а рабочий класс - это в приложении к первому сообщению темы? там вроде
Цитата:
Последний раз редактировалось gl00mie; 21.01.2007 в 21:20.
Старый 16.08.2011, 18:07   #68  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,691 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от niksen Посмотреть сообщение
а у меня не заработало, все исправления, которые есть использовал, всё равно не хочет нормально работать
(...)
вместе с файлом импорт.xls, который выложил propeller.
пробегая дебаггером заметил, что он даже не читает его, вылетая вот с этой ошибкой

Цитата:
Метод "Open" в COM-объекте класса "ADODB.Recordset" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Недопустимое имя '0$'. Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.
А поверить сообщению об ошибке и изменить имя файла XLS или путь доступа не пробовали?

Последний раз редактировалось Владимир Максимов; 16.08.2011 в 18:26.
За это сообщение автора поблагодарили: niksen (1).
Старый 16.08.2011, 19:13   #69  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от niksen Посмотреть сообщение
вот кстати объединение ячеек есть в моём файле...
ну, началось в колхозе утро...
Вы тогда выложите конкретно именно СВОЙ файл Excel - будем смотреть. Потому что, у меня ваш джоб с данными propeller'а прекрасно отработал на "трёшке" и Excel 2003.
За это сообщение автора поблагодарили: mazzy (2).
Старый 16.08.2011, 21:40   #70  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от niksen Посмотреть сообщение
вот кстати объединение ячеек есть в моём файле...
ADO вроде не переваривает объединение ячеек.

выкладывайте свой файл.
сделайте какой-нибудь с левыми данными, но на котором вы получаете такую-же ошибку.

лучше не создавайте новый файл, а замените в вашем файле нормальные данные абракадаброй.
попробуйте удалять данные дихотомией пока не останется несколько строк, на которых ошибка все еще проявляется.

и давайте посмотрим.
__________________
полезное на axForum, github, vk, coub.
Старый 25.09.2013, 07:23   #71  
iCloud is offline
iCloud
Enjoy!
Аватар для iCloud
MCP
Злыдни
 
195 / 111 (4) +++++
Регистрация: 06.03.2012
Приветствую коллеги. Подскажите где взять эту компоненту, или примерно как инсталлятор называется (долго искал не нашел)
Старый 15.04.2014, 14:41   #72  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
День добрый!

Столкнулись с такой проблемой. Есть файл Excel. Работаем с файлом используя предложенный класс. Есть ячейка. Формат общий. Ячейка содержит штрих-код. При обращении из ADO получаем значение данной ячейки вида "4.607E+12", а хотелось бы получать нормальное значение "4607002420100". Кто-нибудь решал подобную задачу?

Спасибо!
Старый 15.04.2014, 16:34   #73  
lev is offline
lev
Ищущий знания...
Аватар для lev
Oracle
MCBMSS
Axapta Retail User
 
1,723 / 491 (20) +++++++
Регистрация: 18.01.2005
Адрес: Москва
Цитата:
Сообщение от GBH Посмотреть сообщение
День добрый!

Столкнулись с такой проблемой. Есть файл Excel. Работаем с файлом используя предложенный класс. Есть ячейка. Формат общий. Ячейка содержит штрих-код. При обращении из ADO получаем значение данной ячейки вида "4.607E+12", а хотелось бы получать нормальное значение "4607002420100". Кто-нибудь решал подобную задачу?

Спасибо!
Если сделать формат ячейки "Текст", то должен возвращаться ШК в нормальном виде.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с)
С Уважением,
Елизаров Артем
Старый 15.04.2014, 17:15   #74  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Спасибо за ответ!
Возможно я не правильно выразился. Я имел в виду обрабатывать поступившую строку в коде. Т.е. понятно, что можно обработать данный столбец до импорта(поставить апостроф в начале строки) и нормально загружать, но можно ли что-то сделать без предварительной обработки? Или предварительная обработка обязательна и другого выхода нет.
Старый 15.04.2014, 18:09   #75  
michel1971 is offline
michel1971
Участник
 
77 / 78 (3) ++++
Регистрация: 14.01.2011
А в чем собственно проблема
X++:
    ExcelImportADO   excel;
    ;
    excel = new ExcelImportADO(@"C:\1.xlsx");

    if (excel.openFile())
    {
        info(excel.getFieldValue(1, true));
    }
в файле в ячейке А1 4.607E+12, в инфологе 4607002420100
За это сообщение автора поблагодарили: GBH (1).
Старый 16.04.2014, 11:47   #76  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от michel1971 Посмотреть сообщение
А в чем собственно проблема
X++:
    ExcelImportADO   excel;
    ;
    excel = new ExcelImportADO(@"C:\1.xlsx");

    if (excel.openFile())
    {
        info(excel.getFieldValue(1, true));
    }
в файле в ячейке А1 4.607E+12, в инфологе 4607002420100
Спасибо за ответ!
Продолжили заниматься проблемой и выяснили такую закономерность - у нас заголовок файла содержит объеденные ячейки, если удалить заголовок с объеденными ячейками, то значение, действительно, считывается верно.

Всем спасибо за ответы!
За это сообщение автора поблагодарили: gl00mie (1), S.Kuskov (1).
Старый 04.04.2017, 18:12   #77  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
установлен excel 2013
ошибка:
X++:
Format of the initialization string does not conform to the OLE DB specification.
строка подключения
X++:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + %1 + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1"
любые файлы пробовал или в windows server 2012 r2 это не работает?
список провайдеров
Изображения
 
Старый 04.04.2017, 18:49   #78  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Цитата:
Сообщение от propeller Посмотреть сообщение
установлен excel 2013
ошибка:
X++:
Format of the initialization string does not conform to the OLE DB specification.
строка подключения
X++:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + %1 + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1"
любые файлы пробовал или в windows server 2012 r2 это не работает?
список провайдеров
Что то в вашей строке не хватает одинарной кавычки перед последней двойной, по идее должно быть так :

X++:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + %1 + ";Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'"
Если она у вас все таки есть, попробуйте вот этот рецепт Format of the initialization string does not conform to the OLE DB specification
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: propeller (1).
Старый 05.04.2017, 16:07   #79  
propeller is offline
propeller
Участник
Аватар для propeller
 
359 / 29 (1) +++
Регистрация: 25.07.2007
да, кавычки не хватало,
Правда после исправления, такая ошибка:
X++:
Provider cannot be found. It may not be properly installed.
попробовали поставить «Microsoft Access Database Engine 64», не помогло
требуется ли какая-то настройка драйвера?
Старый 07.04.2017, 15:01   #80  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
А вы компонент Microsoft Access Database Engine 2010 ставили? Вообще вот тут Accessing Excel files on a x64 machine написано про доступ к файлам в 64 битной среде, там нет какой либо информации про доп. настройки.

Попробуйте через другие средства прочитать данные из Excel при помощи этого драйвера, например, через Management Studio.
__________________
Sergey Nefedov
Теги
ado, download, excel, импорт, полезное, axapta

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
gl00mie: Read Excel table via ADO Blog bot DAX Blogs 2 09.04.2010 08:32
dynamicsusers: DL Tips And Tricks: ADO Database Reader (Jet way) - Excel Example Blog bot DAX Blogs 0 02.08.2007 03:50
casperkamal: Using ADO to read from Excel in Microsoft Dynamics Ax Blog bot DAX Blogs 2 14.05.2007 11:59
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:58.