Вроде бы нашёл решение...
Делается с использованием 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...
|