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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.05.2007, 17:37   #1  
hyperborean is offline
hyperborean
Участник
 
7 / 10 (1) +
Регистрация: 24.11.2006
При экспорте в Excel (Эксель) через Automation "Microsoft Excle 8.0 Object Library" числа округляются до двух знаков после нуля при условии, что в перемунную типа xlRange.Value передается число.
Однако, при использовании форматирования вида "# ##0,000##" (т.е. нам нужно 3-5 знаков после нуля и разделитель разрядов до нуля) и передачи текстового значения все получается отлично.

vValue(type variant)
dQuantity(type decimal)


БЫЛО:
Код:
vValue := dQuantity; //передается через параметр
xlRange.NumberFormat := '# ##0,00###';
xlRange.Value := vValue;
СТАЛО:
Код:
vValue=FORMAT(dQuantity); //передается через параметр
xlRange.NumberFormat := '# ##0,00###';
xlRange.Value := vValue;
Старый 02.05.2007, 17:44   #2  
Голышев Михаил is offline
Голышев Михаил
Участник
 
106 / 10 (1) +
Регистрация: 03.07.2006
Вроде бы в "Microsoft Excel 11.0 Object Library" таких проблем не наблюдалось
Старый 02.05.2007, 18:05   #3  
hyperborean is offline
hyperborean
Участник
 
7 / 10 (1) +
Регистрация: 24.11.2006
в Ms Excel 11.0 действительно не сталкивался с такой проблемой.
Старый 02.05.2007, 18:09   #4  
hyperborean is offline
hyperborean
Участник
 
7 / 10 (1) +
Регистрация: 24.11.2006
Кстати, лучше использовать FORMAT(dQty, 0, 1);
Таким образом при цифрах более 1000 удастся избежать пробелов в группах разрядов. Но это уже RTFM.
Старый 02.05.2007, 18:13   #5  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от hyperborean Посмотреть сообщение
БЫЛО:
Код:
vValue := dQuantity; //передается через параметр
xlRange.NumberFormat := '# ##0,00###';
xlRange.Value := vValue;
СТАЛО:
Код:
vValue=FORMAT(dQuantity); //передается через параметр
xlRange.NumberFormat := '# ##0,00###';
xlRange.Value := vValue;
Немного не понял в чем влияние изменения кода, но FORMAT() определяет каким образом будет выводиться число.
Старый 16.05.2007, 13:14   #6  
hyperborean is offline
hyperborean
Участник
 
7 / 10 (1) +
Регистрация: 24.11.2006
Цитата:
Сообщение от RedFox Посмотреть сообщение
Немного не понял в чем влияние изменения кода, но FORMAT() определяет каким образом будет выводиться число.
Именно в том как будет передаваться число. Оно передается в виде символов, а не в виде числа и не округляется автоматически движком Excel.

Более того правильнее будет писать FORMAT(dUnitPrice, 0, 1). Такая запись избежит ошибок при разбиении верхних разрядов пробелами. Также можно выгружать в шаблоны.
Старый 13.05.2013, 06:58   #7  
smoyk is offline
smoyk
Участник
 
188 / 13 (1) ++
Регистрация: 20.04.2007
Тема конечно старая, просто хотел оставить заметку, что наблюдаю такую проблему на 'Microsoft Excel 14.0 Object Library'. Ексель(?) округляет до двух знаков. Пробовал и до вывода значений ставить range.NumberFormat := '# ##0,000', и после...
Формат помог, правда так не понял, какие могут возникнуть проблемы при разбиении верхних разрядов пробелами, у меня тысячи выводятся нормально (при простом формате).
Спасибо человеку из гипербореи)
 


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

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

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