АвторСообщение



Сообщение: 1
Зарегистрирован: 16.10.14
Репутация: 0
ссылка на сообщение  Отправлено: 16.10.14 16:19. Заголовок: Файл csv в Excel выдает даты вместо чисел


У меня в программе выводятся данные в файл . csv Они разделены точкой с запятой и неудобочитаемые. Если открыть этот файл в Excel 2003, то данные распределяются по столбцам и читаются хорошо, но некоторые дробные числа преобразуются в даты. Например, число 1,17 в янв.17, 14.02 (или 14.2) в 14.фев и т.п. Если ячейки в Exсel отформатировать в меню "формат" на числовой или общий, то не помогает (как до, так и после копирования данных). Чтобы обойти эту проблему, я все дробные числа в своей программе умножил на 100, тогда они стали целыми и уже в даты не преобразуются. Потом в Excel делю их обратно на 100 посредством формул. Но это похоже на то, как натягивать презерватив на кактус (трудовые затраты высокие). Как же бороться с этим злом?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 3 [только новые]







Сообщение: 845
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 16.10.14 20:46. Заголовок: Ну это вовсе не зло,..


Ну это вовсе не зло, а простое расхождение в методах записи вещественных чисел.
Нужно лишь договориться с Excel о том, каким образом будут записываться вещественные числа. То есть либо указать Excel'ю нужный формат, либо программно записывать числа в том формате, который необходим для Excel.

В первом случае заходим в меню Excel (для 2003) "Сервис" - "Параметры" - "Международные". Установить знак "." в качестве разделителя целой и дробной части.

Во втором случае при записи данных в файл заменять знак "." на ",". В этом помогут функции StringFind и StringSetCharacter.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 17.10.14
Репутация: 0
ссылка на сообщение  Отправлено: 17.10.14 11:33. Заголовок: Cпасибо, все получилось


Спасибо огромное. Сделал первым способом (через меню Excel) и все получилось! Вторым способом тоже вроде понятно как, но это сложнее. Да и стоит ли ломать копья из-за запятой вместо точки.

Спасибо: 0 
ПрофильЦитата Ответить





Сообщение: 848
Зарегистрирован: 03.03.13
Откуда: Украина, Днепродзержинск
Репутация: 2
ссылка на сообщение  Отправлено: 17.10.14 17:00. Заголовок: Stoletov пишет: Да..


Stoletov пишет:

 цитата:
Да и стоит ли ломать копья из-за запятой вместо точки.


Если создавать хороший продукт (например, для распространения), то подобные мелочи просто необходимо учитывать. Это как правило хорошего тона. Решением является запрос программой текущих установок локализации Windows (те, что устанавливаются в Панели управления - Язык и региональные стандарты) и форматирование чисел в соответствии с этими стандартами. Ведь в подавляющем большинстве случаев пользователи не изменяют настройки Excel, установленные по умолчанию (а по умолчанию они берутся именно из настроек Windows).
Хотя ради справедливости стоит заметить, что запросить эти настройки Windows можно только при использовании WinAPI - в MQL4/MQL5 таких возможностей нет.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  2 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет