09.02.2006, 11:45 | #1 |
Участник
|
Из Axapta в Excel
Я знаю этот вопрос уже много раз поднимался на форуме но пока в другом ракурсе. Можно ли системними классами загонять данные в Excel? Попробовал вот такой код.
PHP код:
Приемущиство этого варианта это то что все методи видни из Ахапты и не надо капаться по COM библиотекам. С уважением, Анатолий |
|
09.02.2006, 12:09 | #2 |
NavAx
|
Смысл объектов VBA кроется в так называемых коллекциях. Их особенность состоит в том, что их нужно "разворачивать" последовательно. В нашем случае нужно получить объект SysExcelCells, а уже затем присваивать ему значение.
Вместо строки SysExcelWorksheet.cells().item(1,1).value().bStr("hallo world"); распиши: sysExcelCells = SysExcelWorksheet.cells(); sysExcelCells.item(1,1).value("hallo world"); |
|
|
За это сообщение автора поблагодарили: Polar (1), braathe (1), Gustav (1). |
09.02.2006, 12:24 | #3 |
Участник
|
Огромное спасибо. Оказалось что надо не спешить, а раскрыть метод еще на 2 ступени вниз. Я помню мы интеграцию с МS Exchange писати через СОМ также. Вот рабочий код:
PHP код:
Анатолий |
|
|
За это сообщение автора поблагодарили: Polar (1), Gustav (1). |
27.02.2006, 16:36 | #4 |
Moderator
|
ЗдОрово! Мне очень понравилось.
Действительно, всё легко и прозрачно. Практически как в VBA. Можно вставить в джоб и немедленно исполнить. Рекомендую для новичков, не искушенных пока в тонкостях использования, например, ComExcelDocument_RU. Использовал, чтобы вывести в Excel содержимое контейнерных полей FacturedAmounts и SettledAmounts таблицы PurchBookVATProcessLogTransOper_RU для последующего анализа вне Аксапты. Эти два поля - BLOB-ы и разобраться с ними средствами Oracle не получилось по причине "неизвестности" алгоритма упаковки контейнера. Поэтому заставил Аксапту отдать данные уже в распакованном виде. 2 braathe, Roman777: Респекты, господа! P.S. Приложил на память свой неказистый джобик Последний раз редактировалось Gustav; 27.02.2006 в 17:32. |
|
27.02.2006, 18:53 | #5 |
Участник
|
>>>Смысл объектов VBA кроется в так называемых коллекциях. Их особенность состоит в том, что их нужно "разворачивать" последовательно.
это для любого COM объекта а не только для коллекций. Также нельзя сделать X++: void test(Object _test)
{
;
_test.method1().method2();
} X++: void test(Object _test)
{
Object test1=_test.method1();
;
_test.method2();
} |
|