|
![]() |
#1 |
NavAx
|
По-моему, у тех пользователей, у кого стоит 2007, настроена русская системная локаль с разделителем целой и дробной частей - запятой.
В силу этого этот формат должен выглядеть как # ##0,00 - через запятую. А у тех, у кого 2003 - английская(и у вас в том числе), так что формат с точкой - прокатывает. Надо настроить единообразно разделитель либо проверять локаль. Вообще кучеряво будет, если при формировании формата юзать WinAPI и определять текущий разделитель. ![]()
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... ![]() Последний раз редактировалось Maximin; 03.12.2009 в 18:32. |
|
|
За это сообщение автора поблагодарили: propeller (1). |
![]() |
#2 |
Участник
|
Цитата:
m_comApplication.International() Не знаю, сработает ли это в 2007, но для 2003 в классе ComExcelDocument_RU я добавил такой метод X++: // 1 // Возвращает указанную региональную настройку // Поскольку различные региональные настройки имеют разный тип, то используется контейнер из одного элемента // Возвожные значения параметра смотри в справке по Visual Basic в Excel на свойство International // Наиболее нужные /* xlDecimalSeparator = 3 - символ разделитель целой и дробной части xlThousandsSeparator = 4 - символ разделитель троек цифр xlDateSeparator = 17 - символ разделитель в датах xlTimeSeparator = 18 - символ разделитель часов и минут xlGeneralFormatName = 26 - строка имени основного формата данных (обычно General) xl24HourClock = 33 - true - если часы отображаются в 24 часовом формате, false - если в 12 часовом xl4DigitYears = 43 - true - если отображаются 4 знака года, false - если 2 xlDateOrder = 32 - как отображается дата: 0 - месяц/день/год, 1 - день/месяц/год, 2 - год/месяц/день */ container getInternational(int _international) { COMVariant comInternational; container con = connull(); ; if (m_comApplication) { try { comInternational = m_comApplication.International(_international); switch (comInternational.variantType()) { case COMVariantType::VT_BOOL: { con = conIns(con,1,comInternational.boolean()); break; } case COMVariantType::VT_BSTR: { con = conIns(con,1,comInternational.bStr()); break; } case COMVariantType::VT_DATE: { con = conIns(con,1,comInternational.date()); break; } case COMVariantType::VT_DECIMAL: { con = conIns(con,1,comInternational.decimal()); break; } case COMVariantType::VT_INT: { con = conIns(con,1,comInternational.int()); break; } } // switch (comInternational.variantType()) } catch (Exception::Error || Exception::Internal) { throw error("Ошибка в функции " + funcname()); } } // if (m_comApplication) return con; } |
|
|
За это сообщение автора поблагодарили: Maximin (1). |