Форум » Консультации по программированию » Файл csv в Excel выдает даты вместо чисел » Ответить

Файл csv в Excel выдает даты вместо чисел

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

Ответов - 3

Scriptong: Ну это вовсе не зло, а простое расхождение в методах записи вещественных чисел. Нужно лишь договориться с Excel о том, каким образом будут записываться вещественные числа. То есть либо указать Excel'ю нужный формат, либо программно записывать числа в том формате, который необходим для Excel. В первом случае заходим в меню Excel (для 2003) "Сервис" - "Параметры" - "Международные". Установить знак "." в качестве разделителя целой и дробной части. Во втором случае при записи данных в файл заменять знак "." на ",". В этом помогут функции StringFind и StringSetCharacter.

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

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




полная версия страницы