14.08.2015, 10:33 | #1 |
Участник
|
Глюк(?) при импорте в Excel через .Net
AX 2009.Kernel Version 5.0.1600.2967; Application VErsion 5.0.1500.6491
Импортирую из Excel через .Net. Сначала идет блок данных, в котором артикул состоит только из цифр. Затем артикул - буквенно-символьно-цифровой. Формат ячеек на всей колонке - Общий. Однако, выравнивание (автоматом Экселя)для числового - справа по ячейке. а выравнивание смешанного-строкового - слева.См картинку. http://www.axforum.info/forums/attac...1&d=1439536033 Как ведет себя Axapta. числовые артикулы считывает на ОК. Строковые, если они идут так, как в скриншоте - не понимает. (пустая строка) Что самое интересное, если загружать отдельно строковые(буквенно-символьно-цифровой) - все читает - все понимает. Значит дело в коде. Привожу код. X++: container importNext() { container res; CLRObject value; int row; int column; anytype element; str string; ; dataRow = dataRowCollection.get_Item(nCountLines); array = new System.Object[qtyColumn](); // Необходимо в каждой итерации заново инициализировать массив - Убрать ошибку с невозможностью считать данные другого типа (после числовых артикулов не понимает строковые) - Поэтому заново инициализировал массив. - не помогло array = dataRow.get_ItemArray(); for (counter = 0; counter < qtyColumn; counter++) { value = dataRow.get_Item(counter); string = value.ToString(); if(string) { Element = valueNet2Anytype(value); if(Element) { res += Element; } else { res += string; } } } nCountLines++; return res; } Если загружаем только артикулы буквенно-символьно-цифрового формата (типа FBEB0010-100010) - все разбирает. Как вы наверно поняли, эта функция читает одну строку ячеек Excel. Вызывается в цикле извне. (Пробовал как через массив, так и через dataRow - не помогло). У кого-нибудь есть идеи? Последний раз редактировалось Loengrinchik; 14.08.2015 в 10:36. |
|
14.08.2015, 10:55 | #2 |
Участник
|
Идеи есть:
|
|
|
|