|
05.02.2015, 14:25 | #1 |
Участник
|
Загрузка данных из Excel COM
Добрый день, ситуация такая: есть файл Excel в котором есть ячейка с числом 1000. Данные загружаются в аксапту, и затем используются для создания журнала. И в при одном варианте загрузки мы получаем 1000,00, а при другом 1. Данные дергаем вот так :
X++: Fields.itemIdx( ).Value() X++: anytype value() { COMVariant value; real tmp; value = field.value(); switch (value.variantType()) { case COMVariantType::VT_I2: return value.byte(); case COMVariantType::VT_I4: return value.int(); case COMVariantType::VT_R4, COMVariantType::VT_R8: //VSN003_FD_022_boss_import_dPul --> tmp = value.double(); if (tmp == 0) tmp = value.float(); //VSN003_FD_022_boss_import_dPul <-- return tmp; case COMVariantType::VT_CY: return value.currency(); case COMVariantType::VT_DATE: return value.date(); case COMVariantType::VT_BSTR: return value.bStr(); case COMVariantType::VT_BOOL: return value.boolean(); case COMVariantType::VT_DECIMAL: return value.decimal(); case COMVariantType::VT_I1: return value.byte(); case COMVariantType::VT_UI1: return value.uInt(); case COMVariantType::VT_UI2: return value.uShort(); case COMVariantType::VT_UI4: return value.uLong(); } return ''; } P.S. Формат ячейки : если поменять формат ячейки на числовой, то все работает правильно. Но это ведь не дает ответ, почему в одном варианте загрузки все работает и со старым форматом ячейки! Последний раз редактировалось АртемМелихов; 05.02.2015 в 14:39. Причина: косяк |
|
05.02.2015, 16:12 | #2 |
Участник
|
Вам нужны ответы на экзистенциальные вопросы или работающий импорт? Для второго в свое время был реализован класс для преобразования значений между различными значимыми типами
|
|
|
За это сообщение автора поблагодарили: Logger (3). |
09.02.2015, 07:46 | #3 |
Участник
|
Цитата:
Сообщение от gl00mie
Вам нужны ответы на экзистенциальные вопросы или работающий импорт? Для второго в свое время был реализован класс для преобразования значений между различными значимыми типами
|
|
09.02.2015, 09:29 | #4 |
Участник
|
Разбирайтесь - кто ж запретит. Расскажите потом, что удалось раскопать
Мне лично кажется, что "настоящий" тип COMVariant определяется не в AX, а в Exсel. Чтобы разобраться с этим, можно сохранить исходный файл Excel в формате XML Spreadsheet и посмотреть на нужную ячейку в XML-виде - это даст некоторое представление о том, что сам Excel думает о типе данных ячейки. |
|
Теги |
excel com формат |
|
|