[MS EXCEL] + формат ячеек
От: Аноним  
Дата: 15.07.10 06:32
Оценка:
Есть программа, которая генерирует документы EXCEL через COM, но сам EXCEL находится на удалённом компьютере в локальной сети.
Генерация заключается в выполнении поиска в шаблоне документа тегов и их замене на числа (#tag# -> 123456,00). В ячейках установлен нужный мне формат числа (123 456,00). Замена происходит вызовом Excel функции Replace у объекта Range

r.Replace("#tag#", "123456,00")


На самом деле все вызовы происходят динамически, т.е. PIA от Microsoft не подключаются.

Если я генерирую со своего компьютера, то всё нормально и я получаю в ячейке: 123 456,00.

А если с пользователь с других (пробовал на двух) — то числа в ячейках сохраняются как текст (123456,00), а на как число, о чём сигнализирует зелёный треугольничек в левом верхнем углу ячейки.

При этом формат в ячейке не сбрасывается. Далее если на этой ячейки нажать F2, а затем Enter, то текст превращается в число в требуемом формате.

Поставил виртуальную машину с Excel — то же всё OK

В чём проблема?
Re: [MS EXCEL] + формат ячеек
От: Аноним  
Дата: 16.07.10 13:13
Оценка:
А>
А>r.Replace("#tag#", "123456,00")
А>


Дело в том, что разделитель целой и дробной части числа в Excel зависит от настройки самого Excel и регирнальных настоек Windows:
If Application.UseSystemSeparators Then
    r.Replace("#tag#", "123456" & <РазделительЦелойИДробнойЧастиКоторыйНастроенВWindows> & "00")
Else
    r.Replace("#tag#", "123456" & Application.DecimalSeparator & "00")
End If
Re[2]: [MS EXCEL] + формат ячеек
От: Аноним  
Дата: 20.07.10 04:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>
А>>r.Replace("#tag#", "123456,00")
А>>


А>Дело в том, что разделитель целой и дробной части числа в Excel зависит от настройки самого Excel и регирнальных настоек Windows:

А>
А>If Application.UseSystemSeparators Then
А>    r.Replace("#tag#", "123456" & <РазделительЦелойИДробнойЧастиКоторыйНастроенВWindows> & "00")
А>Else
А>    r.Replace("#tag#", "123456" & Application.DecimalSeparator & "00")
А>End If
А>


Региональные настройки Windows и Excel на компьютерах одинаковые.
Re: [MS EXCEL] + формат ячеек
От: ZAMUNDA Земля для жалоб и предложений
Дата: 20.07.10 16:58
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Генерация заключается в выполнении поиска в шаблоне документа тегов и их замене на числа (#tag# -> 123456,00). В ячейках установлен нужный мне формат числа (123 456,00). Замена происходит вызовом Excel функции Replace у объекта Range


А>
А>r.Replace("#tag#", "123456,00")
А>

Ищи ручками ячейки с "#tag#", пробегая по коллекции которую возвращает Worksheet.UsedRange(), и заменяй им значения так r.Value = 123456. Не знаю как на шарпе этот код должен выглядеть, так что в общих чертах только могу объяснить.

PS: А самый лучший способ — именованные диапазоны.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
метки_мля м_е_т_к_и
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.