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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.02.2006, 11:45   #1  
braathe is offline
braathe
Участник
 
90 / 13 (1) ++
Регистрация: 16.02.2005
Lightbulb Из Axapta в Excel
Я знаю этот вопрос уже много раз поднимался на форуме но пока в другом ракурсе. Можно ли системними классами загонять данные в Excel? Попробовал вот такой код.
PHP код:
    SysExcelApplication    sysExcelApplication;
    
SysExcelWorkbooks      sysExcelWorkbooks;
    
SysExcelWorkbook       sysExcelWorkbook;
    
SYSExcelWorksheets     sysExcelWorksheets;
    
SysExcelWorksheet      sysExcelWorksheet;
    
SysExcelCell           sysExcelCell;
    
SysExcelRange          sysExcelRange;

    ;
    
sysExcelApplication sysExcelApplication::construct();
    
sysExcelApplication.visible(false);
    
sysExcelWorkbooks sysExcelApplication.workbooks();
    
sysExcelWorkbook sysExcelWorkbooks.add();
    
sysExcelWorksheets =  sysExcelWorkbook.worksheets();
    
sysExcelWorksheet sysExcelWorksheets.itemFromNum(1);

    
SysExcelWorksheet.cells().item(1,1).value().bStr("hallo world");
    
sysExcelWorkbook.saveAs("C:\MyDocument.xls");
    
sysExcelApplication.visible(true); 
Книга создается, все открывается, но текста нет. Может я где-то что-то упустил?
Приемущиство этого варианта это то что все методи видни из Ахапты и не надо капаться по COM библиотекам.

С уважением,
Анатолий
Старый 09.02.2006, 12:09   #2  
Roman777 is offline
Roman777
NavAx
Аватар для Roman777
NavAx Club
 
320 / 64 (3) ++++
Регистрация: 10.02.2005
Адрес: г. Москва
Смысл объектов 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  
braathe is offline
braathe
Участник
 
90 / 13 (1) ++
Регистрация: 16.02.2005
Огромное спасибо. Оказалось что надо не спешить, а раскрыть метод еще на 2 ступени вниз. Я помню мы интеграцию с МS Exchange писати через СОМ также. Вот рабочий код:
PHP код:
    sysExcelCells sysExcelWorksheet.cells();
    
sysExcelCell sysExcelCells.item(1,1);
    
sysExcelCell.value("Hello World"); 
С уважением,
Анатолий
За это сообщение автора поблагодарили: Polar (1), Gustav (1).
Старый 27.02.2006, 16:36   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
ЗдОрово! Мне очень понравилось.
Действительно, всё легко и прозрачно. Практически как в VBA.
Можно вставить в джоб и немедленно исполнить. Рекомендую для новичков, не искушенных пока в тонкостях использования, например, ComExcelDocument_RU.


Использовал, чтобы вывести в Excel содержимое контейнерных полей FacturedAmounts и SettledAmounts таблицы PurchBookVATProcessLogTransOper_RU для последующего анализа вне Аксапты.
Эти два поля - BLOB-ы и разобраться с ними средствами Oracle не получилось по причине "неизвестности" алгоритма упаковки контейнера. Поэтому заставил Аксапту отдать данные уже в распакованном виде.

2 braathe, Roman777: Респекты, господа!

P.S. Приложил на память свой неказистый джобик
Вложения
Тип файла: txt Jobik.txt (4.6 Кб, 409 просмотров)

Последний раз редактировалось Gustav; 27.02.2006 в 17:32.
Старый 27.02.2006, 18:53   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
>>>Смысл объектов VBA кроется в так называемых коллекциях. Их особенность состоит в том, что их нужно "разворачивать" последовательно.

это для любого COM объекта а не только для коллекций. Также нельзя сделать
X++:
void test(Object _test)
{
;
    _test.method1().method2();
}
а только
X++:
void test(Object _test)
{
    Object test1=_test.method1();
;
    _test.method2();
}
Теги
excel, экспорт, экспорт в excel, com-объект

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Axapta программирует Excel на VBA Gustav DAX: База знаний и проекты 10 13.03.2006 11:42
Печать отчета в Excel. Axapta 3.0 Fedr Kuzmich DAX: Функционал 2 19.05.2004 18:26
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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