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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.10.2015, 17:18   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,984 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Gl00mie выкладывал свой проект по работе с Excel через .net
Поставьте и не мучайтесь. с типами там тоже решена проблема.

Если же влом, то можно сделать что-то типа

X++:
//GRD_LoQ001217_LedgerJournalImpXLS_PKOZ, Создание интерфейса по загрузке строк журналов из Excel, pkoz, 25.07.2005
// Если в ячейке Excel введено значение 18 - (ставкаНДС) то в COM объекте она имеет тип COMVariantType::VT_R8
// т.е. Excel считает
// значение числом с двойной точностью а не строкой.
// Обходим это ограничение. Этот метод используется когда нам точно нужно получить строку.
static str getStringValue(COMVariant _COMVariant, int _decimals = 0)
{
    str     ret;
    COMVariantType  COMType = _COMVariant.variantType();
    real    realTmp;
    ;
    switch(COMType)
    {
        case COMVariantType::VT_BSTR :
            ret = _COMVariant.bStr();
            break;
    // вещественные
        case COMVariantType::VT_R8 :
    //        ret = num2STR(_COMVariant.double(), 1,0,1,0);
            ret = num2STR(_COMVariant.double(), 1,_decimals,1,0); // переход на 2009  // pkoz 11.02.2011
    //        realTmp = _COMVariant.double();
    //        ret = num2STR(realTmp, 1,0,1,0);
            break;
        case COMVariantType::VT_R4 :
    //        ret = num2STR(_COMVariant.float(), 1,0,1,0);
            ret = num2STR(_COMVariant.float(), 1,_decimals,1,0); // переход на 2009  // pkoz 11.02.2011
            break;
        case COMVariantType::VT_DECIMAL :
    //        ret = num2STR(_COMVariant.decimal(), 1,0,1,0);
            ret = num2STR(_COMVariant.decimal(), 1,_decimals,1,0); // переход на 2009  // pkoz 11.02.2011
            break;
        case COMVariantType::VT_CY :
    //        ret = num2STR(_COMVariant.currency(), 1,0,1,0);
            ret = num2STR(_COMVariant.currency(), 1,_decimals,1,0); // переход на 2009  // pkoz 11.02.2011
            break;
    // целые
        case COMVariantType::VT_UI1 :
            ret = num2STR(_COMVariant.byte(), 1,0,1,0);
            break;
        case COMVariantType::VT_I1 :
            ret = num2STR(_COMVariant.char(), 1,0,1,0);
            break;
        case COMVariantType::VT_I4 :
            ret = num2STR(_COMVariant.long(), 1,0,1,0);
            break;
        case COMVariantType::VT_UI4 :
            ret = num2STR(_COMVariant.ulong(), 1,0,1,0);
            break;
        case COMVariantType::VT_UI2 :
            ret = num2STR(_COMVariant.ushort(), 1,0,1,0);
            break;

        default :
            ret = '';
    }

    return   ret;
}
X++:
static str getStringValueSafe(COM _comRange, int _decimals = 0)
{
    str         ret;
    COMVariant  comVariant;
    ;
    #startSafeCall_RU
    comVariant = _comRange.value();
    #endSafeCall_RU
    ret = GRD_COMVariant::getStringValue( comVariant, _decimals);
    return   ret;
}
где GRD_COMVariant:: - класс в котором написаны эти методы.

И используйте getStringValueSafe для доставания строковых значений.
За это сообщение автора поблагодарили: syl (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
atinkerersnotebook: Using the Dynamics AX Excel Add-In Blog bot DAX Blogs 1 25.09.2013 07:11
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11
чтение из Excel текста, состоящего из цифр somebody DAX: Программирование 15 25.01.2013 20:28
Чтение ИЗ Excel (а не запись в него) Mechanizm DAX: Программирование 10 04.07.2004 11:50
Чтение Excel-ячейки в Аксапте (2.5) через COM AKIS DAX: Программирование 3 25.03.2004 20:18

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

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

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