Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

21 Март 2019, 13:10 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Парсинг валют  (Прочитано 716 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kolob204
Участник
**
Offline Offline

Сообщений: 19


« Стартовое сообщение: 21 Декабрь 2018, 17:41 »


Доброго дня, дорогие программисты  Афро

Начну с того, что скажуследующее - написал парсер на Delphi, который записывает мне курсы в документ CALC.
Если кому то такое надо - могу дать хоть исходники, хоть готовый exe, и даже могу поправить его под ваши нужды и удобство.

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

Нашёл в гугле макрос для EXCEL (он частично уже переделан, так что не ломайте голову над этим, а именно то место где определяется текущая активная ячейка)
Код:
REM  *****  BASIC  *****

Sub Get_USD_BIRGA()
    Dim sURI As String
        Dim oHttp As Object
        Dim htmlcode, outstr As String
    Dim oSheet As Object
  Dim oCell As Object
  Dim oCursor As Object
  Dim aAddress As Variant
           
        sURI = "http://www.forexpf.ru/chart/usdrub/"
        On Error Resume Next
        Set oHttp = CreateObject("MSXML2.XMLHTTP")
        If Err.Number <> 0 Then
            Set oHttp = CreateObject("MSXML.XMLHTTPRequest")
        End If
        On Error GoTo 0
        If oHttp Is Nothing Then
            Exit Sub
    End If
        oHttp.Open "GET", sURI, False
   rem     oHttp.Send()
   rem     htmlcode = oHttp.responseText
   rem     outstr = Mid(htmlcode, InStr(1, htmlcode, "Курс доллара к рублю (USDRUB)") + 44, 6) 'для курса Bid значение 44. Для курса Ask изменить на 61
        Set oHttp = Nothing
         
        outstr = Replace(outstr, ",", ".")
        Doc = ThisComponent
        oSheet = Doc.getCurrentController().ActiveSheet
        oCellRange    = ThisComponent.getCurrentSelection()
        Cell = oCellRange.getCellByPosition(0,0)
        Cell.String = outstr
    End Sub

но не знаю как переделать вот эти строки(они не работают в SCALC)
Код:
      oHttp.Send()
      htmlcode = oHttp.responseText
      outstr = Mid(htmlcode, InStr(1, htmlcode, "Курс доллара к рублю (USDRUB)") + 44, 6) 'для курса Bid значение 44. Для курса Ask изменить на 61
если это вообще возможно.

На англоязычных форумах вроде говорят что макросом этого не сделать.
Но как то можно JAVA прикрутить чтоли, я не совсем понял (переводил без переводчика, как мог...)

у ЦБРФ есть такие ссылки:
курсы в формате JSON
https://www.cbr-xml-daily.ru/daily_json.js
https://www.cbr-xml-daily.ru//archive//2018//12//21//daily_json.js

XML
https://www.cbr-xml-daily.ru/daily.xml
https://www.cbr-xml-daily.ru/daily_utf8.xml

может у кого то есть готовое решение?

PS
кнопку к макросом могу связать :-)


* ScreenShot017.jpg (77.75 Кб, 1009x444 - просмотрено 4 раз.)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #1: 21 Декабрь 2018, 18:35 »

Так ты с Forex'а хочешь брать или ЦБРФ достаточно? В смысле, постоянно мониторить курс или раз в день цифру всосал и хватит?
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
kolob204
Участник
**
Offline Offline

Сообщений: 19


« Ответ #2: 21 Декабрь 2018, 18:51 »

брать или ЦБРФ достаточно? В смысле, постоянно мониторить курс или раз в день цифру всосал и хв

раз в день хватит. график не нужно строить....
это просто ссылка форекса была в Экселевском примере....
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #3: 21 Декабрь 2018, 19:22 »

Знаешь, я тебе сейчас один умный вещь скажу - только ты не обижайся!
Никогда не понимал XML-формат, не любил его. И если приходилось с ним сталкиваться (например, восстанавливать испорченный ODS) - то старался смотреть на него как на просто сильно замусоренный какими-то угловыми скобочками текст... И раз уж это просто текст, то когда прочитал твой вопрос, решил, что простейшим способом решить твою задачу будет тупо открыть одну из твоих ссылок как текстовый файл. Всё равно ведь твой макрос использует
Код:
Mid(htmlcode, InStr(1, htmlcode, "Курс доллара к рублю (USDRUB)")
Так какая ему разница, каким именно образом мы этот текст получим?

И, наверное, на полном серьёзе рекомендовал бы именно такой способ... если бы не вот эта статья в Вики (длинная, оченьмногабукав  Смеющийся )

Попробовал. Скачал. Установил. Одну из твоих XML-ссылок открыл. Открыл как просто файл, открыл как "Вставить лист из файла" - работает, и работает шустро. Так, может быть, ну его, этот макрос?


* КурсыССайта.png (72.66 Кб, 738x650 - просмотрено 7 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
kolob204
Участник
**
Offline Offline

Сообщений: 19


« Ответ #4: 21 Декабрь 2018, 19:47 »

к просто файл, открыл как "Вс
насчёт того - как именно получится результат, через текст или через XML - мне не очень важно :-)

попробовал, скачал. открыл.
Я только не понял, это нельзя открывать в той же книге - которая мне нужна , на соседнем листе?
потому что открывается новое окно, как новый файл... а мне надо связать эти курсы с математическими формулами в моей рабочей книге.

И я хотел чтобы обновлялось хотя бы по кнопке, к которой я бы привязал "команду"-"получить курсы".
а такой способ ничем не короче - чем запустить мою программу на делфи с спарсить- то что мне надо.

но если ну макрос, подскажите где попробовать почитать - чтобы научиться уму разуму, только не скидывайте ссылку на Содержание типа "ВСЁ об OPEN OFFICE" )))
хотя бы на главу какую то...типа функции для работы с WEB...


* parsing_Delphi_to_scalc_doc.png (16.49 Кб, 600x430 - просмотрено 7 раз.)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #5: 21 Декабрь 2018, 20:06 »

это нельзя открывать в той же книге - которая мне нужна , на соседнем листе?
Можно. Смотри образец - я картинки прямо туда воткнул

* daily.ods (166.42 Кб - загружено 5 раз.)
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
kolob204
Участник
**
Offline Offline

Сообщений: 19


« Ответ #6: 21 Декабрь 2018, 20:13 »


извиняюсь, я сначала не понял, что это за чудо-юдо команда - "Вставить лист из файла"
нашёл. понял. ок, спасибо, сойдёт. если вдруг ещё что "изображу" на эту тему - добавлю сюда, может кому сгодиться :-)

С пятницей вас и хорошего настроения! :-)
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 727


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #7: 21 Декабрь 2018, 20:32 »

Да, если вдруг все-таки захочешь кнопку нарисовать для обновления (ну, чтобы каждый раз в Правка-Связи-Обновить не лазить), то макрос понадобится. Но это не сложно, во всяком случае проще, чем то, что ты цитировал в первом сообщении:
Код:
ThisComponent.SheetLinks.getByName("https://www.cbr-xml-daily.ru/daily.xml").refresh()
С наступающими!
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
kolob204
Участник
**
Offline Offline

Сообщений: 19


« Ответ #8: 21 Декабрь 2018, 20:43 »

Да, если вдруг все-таки захочешь кнопку нарисовать для обновления (ну, чтобы каждый раз в Правка-Связи-Обновить не лазить), то макрос понадобится. Но это не сложно, во всяком случае проще, чем то, что ты цитировал в первом сообщении:
Код:
ThisComponent.SheetLinks.getByName("https://www.cbr-xml-daily.ru/daily.xml").refresh()
С наступающими!

крутотень!
куда вам Новогодний подарок отправить?  помогаете уже не в первой теме :-)
Записан
kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 613



« Ответ #9: 21 Декабрь 2018, 20:49 »

куда вам Новогодний подарок отправить?  помогаете уже не в первой теме :-)
в подписи у него варианты расписаны
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
kolob204
Участник
**
Offline Offline

Сообщений: 19


« Ответ #10: 21 Декабрь 2018, 21:02 »

куда вам Новогодний подарок отправить?  помогаете уже не в первой теме :-)
в подписи у него варианты расписаны

не люблю, когда на "приватные" сообщения отвечают другие.
Если хотите сказать - что приватные нужно писать в приват - отвечу, что хотел показать читателям форума, что Благодарить .... ну вообщем там, же в подписи. :-)

а про попытку перевода вот что говорят мне (см рисунок)  (уже пробовал в прошлый раз, но не стал спрашивать )
простите, но я из России :-)

варианты? Улыбка


* card_error.png (27.59 Кб, 1152x648 - просмотрено 10 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 656


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #11: 21 Декабрь 2018, 21:14 »

Никогда не понимал XML-формат, не любил его.
Я тоже не люблю этот формат и не понимаю зачем его так напичкали хламом. Но иногда нужно его распарсить.

В примере парсит три столбца для всех валют, но можно сделать вывод любых нужных строк и столбцов:

* Парсинг валют.ods (12.77 Кб - загружено 6 раз.)
Записан

kompilainenn
Мастер
*****
Offline Offline

Сообщений: 2 613



« Ответ #12: 21 Декабрь 2018, 21:17 »

а про попытку перевода вот что говорят мне (см рисунок)  (уже пробовал в прошлый раз, но не стал спрашивать )
простите, но я из России :-)
можете перевести на "наш ресурс", владелец ресурса и Джон договорятся, я вас уверяю
Записан

Поддержать разработчиков LibreOffice можно тут, а наш форум вот тут
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!