Наверное, плохо сформулировал =)
Задачая следующая - создать таблицу данных в экселе средствами MQL4.
Именно таблицу, т.е. чтоб было несколько строк и столбцов. Со стороками проблем нет - \n или \r. А вот столбец заполняется только первый.
Есть ли символ, который обозначит Табуляцию? (в экселе при нажатии Tab курсор переносится в соседний столбец)
Или, может, есть другое решение?
Вопрос адресуется и разработчикам, и всем, кто сталкивался или знает ;)
Всем заранее спасибо.
Задачая следующая - создать таблицу данных в экселе средствами MQL4.
Именно таблицу, т.е. чтоб было несколько строк и столбцов. Со стороками проблем нет - \n или \r. А вот столбец заполняется только первый.
Есть ли символ, который обозначит Табуляцию? (в экселе при нажатии Tab курсор переносится в соседний столбец)
Или, может, есть другое решение?
Вопрос адресуется и разработчикам, и всем, кто сталкивался или знает ;)
Всем заранее спасибо.
вообще-то "\t" должно помочь. я многократно использовал вариации эксперта, в котором открывал csv-файл (ёксель его хорошо понимает) с третьим параметром "\t" в качестве разделителя. все переменные переданные в функции FileWrite будут разделены символом табуляции, а в конце будет перевод строки
я не пробовал csv, пробовал xls - не получается. Ни как разделитель, ни как кусок текста... Завтра ещё поэксперементирую...
нет. xls - слишком сложный формат, как бинарник сложный. одна документация весит не одну сотню страниц. csv - единственно возможная альтернатива в Вашем случае
нет. xls - слишком сложный формат, как бинарник сложный. одна документация весит не одну сотню страниц. csv - единственно возможная альтернатива в Вашем случае
понял. Спасибо. Буду пробовать.
Попробовал. Не получается.
Код скрипта:
Код скрипта:
#include <stdlib.mqh> int start() { string text1 = TimeToStr( LocalTime(), TIME_SECONDS ); string text2 = "Bid = "; string text3 = DoubleToStr( Bid, Digits ); int _GetLastError; string file_name = "logs\_TradeLog\\" + TimeToStr( LocalTime(), TIME_DATE ) + ".csv"; int file_handle = FileOpen ( file_name, FILE_CSV | FILE_WRITE, "\t" ); if ( file_handle > 0 ) { FileSeek ( file_handle, 0, SEEK_END ); if ( FileWrite ( file_handle, text1, text2, text3 ) < 0 ) { _GetLastError = GetLastError(); Print( "trade_lib&info_lib - Ошибка при FileWrite ( ", file_handle, ", \"", text1, "\", \"", text2, "\", \"", text3, "\" ), GetLastError() = ", _GetLastError, ", ErrorDescription = ", ErrorDescription( _GetLastError ) ); } FileClose ( file_handle ); } else { _GetLastError = GetLastError(); Print( "trade_lib&info_lib - Ошибка при FileOpen( \"", file_name, "\", FILE_READ | FILE_WRITE, \" \" ), GetLastError() = ", _GetLastError, ", ErrorDescription = ", ErrorDescription( _GetLastError ) ); } return(0); }
Вместо FILE_CSV | FILE_WRITE пробовал FILE_READ | FILE_WRITE, FILE_READ | FILE_CSV | FILE_WRITE.
Результат - один:
Второй и третий столбцы заполнятся и не думают...
кстати, "\n" и "\r" в роли разделителей тоже не воспринимаются... тоже "квадратики"...
На всякий случай: WinXP Pro SP1 русифицирован MUI, Office 2002 SP1...
На всякий случай: WinXP Pro SP1 русифицирован MUI, Office 2002 SP1...
Все гениальное - просто =) но недокументировано =)))
получилось. Вот так:
получилось. Вот так:
int file_handle = FileOpen ( file_name,FILE_READ | FILE_WRITE );
т.е. разделитель - ";"
а мне казалось что екселю пофигу, я всегда ксв предварительно переименовывал в тхт файл, а затем при открытии указывал кодировку, разделители и т.д, иначе он все в один столбец пихал.
Зависит от Экселя (или настроек в нем или реестре - не копал). Дома Эксель с полуслова открывает csv файлы как надо и не жужжит, а на работе, если явно не указать данный формат - открывает все в одном столбце, тупит короче.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пытался писАть "\t" - не помогло.
Фантазия иссякла =(