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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.04.2010, 12:29   #3  
Morpheus is offline
Morpheus
Участник
Аватар для Morpheus
Соотечественники
 
602 / 164 (7) ++++++
Регистрация: 30.03.2005
Адрес: Київ-København-Düsseldorf
Предлагаю попробовать переписать методы заменив вызовы COM на CLR.

Пример кода создающий csv файл:

X++:
protected FileName excel2csv(FileName _excelFileName)
{
    Microsoft.Office.Interop.Excel._Application          excel;
    Microsoft.Office.Interop.Excel.Workbooks             workbooks;
    Microsoft.Office.Interop.Excel._Workbook             workbook;
    System.Type                                          type;
    System.Reflection.FieldInfo                          fieldInfo;
    System.Object                                        missing;
    Microsoft.Office.Interop.Excel.XlFileFormat          fileFormat;
    Microsoft.Office.Interop.Excel.XlSaveAsAccessMode    saveAsAccessMode;
    FileName                                             textFileName;
    FileName                                             path;
    FileName                                             name;
    FileName                                             extention;
    ;
    new InteropPermission(InteropKind::ClrInterop).assert();

    [path, name, extention] = fileNameSplit(_excelFileName);
    textFileName = path + name + '.csv';

    if (System.IO.File::Exists(textFileName))
        System.IO.File::Delete(textFileName);

    type             = System.Type::GetType('System.Reflection.Missing');
    fieldInfo        = type.GetField('Value');
    missing          = fieldInfo.GetValue(null);
    fileFormat       = ClrInterop::parseClrEnum('Microsoft.Office.Interop.Excel.XlFileFormat', 'xlTextWindows');
    saveAsAccessMode = ClrInterop::parseClrEnum('Microsoft.Office.Interop.Excel.XlSaveAsAccessMode', 'xlNoChange');

    excel            = new Microsoft.Office.Interop.Excel.ApplicationClass();
    workbooks        = excel.get_Workbooks();
    workbook         = workbooks._Open(_excelFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);
    workbook.SaveAs(textFileName, fileFormat, missing, missing, missing, missing, saveAsAccessMode, missing, missing, missing, missing, missing);
    workbook.Close(false, _excelFileName, null);

    CodeAccessPermission::revertAssert();

    return textFileName;
}
За это сообщение автора поблагодарили: Logger (4), gl00mie (5), Batuev Artem (0).
Теги
.net, ax2009, ax4.0, com-объект, excel, импорт данных, импорт файла

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Установка DAX 4.0 под локальным пользователем на Windows XP shogel DAX: База знаний и проекты 81 07.04.2010 16:42
emeadaxsupport: Group policy setting "System Objects: Default owner for objects created by members of the administrators group" is missing on Windows Server 2008 Blog bot DAX Blogs 2 28.08.2009 02:14
axaptafreak: Running Dynamics AX 2009 on Windows 7 using Windows Virtual XP Blog bot DAX Blogs 3 24.07.2009 11:20
Client Axapta 3.0 SP4 и Linux. Как запустить? Daiver DAX: Администрирование 10 28.06.2007 15:59
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:39.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.