|
![]() |
#1 |
Участник
|
![]()
Вроде бы нашёл решение...
Делается с использованием International - свойства приложения Excel. International(3) - это как раз десятичная точка. См. помощь по VB. Пришлось, правда, использовать дополнительный класс DVP_ComExcelDocument_RU, где есть соотв. метод, и открывать пустой файл (только на время определения локальных установок). Я-то работаю с ComExcelDocument_RU, мне вышеупомянутый класс больше ни для чего не нужен (там нет других, нужных мне методов). Вот такую ф-цию накропал: #define.xlDecimalSeparator(3) // somebody, 27.01.04 // возвращает символ десятичной точки из локальных настроек (обычно точка или запятая) str decimalPointChar() { DVP_ComExcelDocument_RU dVP_ComExcelDocument_RU; str ret; ; dVP_ComExcelDocument_RU = new DVP_ComExcelDocument_RU(); dVP_ComExcelDocument_RU.newFile(""); dVP_ComExcelDocument_RU.visible(false); ret = dVP_ComExcelDocument_RU.international(#xlDecimalSeparator).bstr(); dVP_ComExcelDocument_RU.closeDocument(); return ret; } В принципе так можно вытащить любую рег. настройку. DVP_ComExcelDocument_RU возвращает m_comApplication.International(_parameter), где m_comApplication - это COM родительского класса ComOfficeDocument_RU. Видимо, можно сделать и грамотнее, чтобы не пугать пользователя появившимся на долю секунды пустым XLS-файлом (visible до инициализации, к сожалению, не вызовешь)... 2-й вариант решения - просто вбить соотв. форматы в шаблон. Но опять же - не факт, что сложный шаблон (с условиями, например) будет работать в другой версии Office или с другими рег. настройками. --- Axapta is my friend, but truth is more of value... |
|