#c# #c #excel
#c# #c #Excel
Вопрос:
Меня попросили создать программу в любом C
или C#
, по моему выбору, которая будет использоваться FIX messaging
для получения Bid/Offer
цен на различные FX instruments
и хранения данных в базе данных. Эту часть я знаю, как это сделать, но теперь клиент сказал мне, что хочет иметь возможность открывать n количество книг Excel на нескольких компьютерах для просмотра исторических данных, а также просматривать текущие данные по мере их поступления.
Я видел в Excel 2010, что вы можете напрямую подключаться к серверу sql для повторного поиска данных, но частота обновления может быть не более минуты. Я думал о создании RSS-канала, но опять же, это может быть слишком медленно. Эти ребята не слишком беспокоятся о задержке, но я думаю, что если задержка больше секунды, они могут быть не слишком довольны.
возможно ли то, чего я добиваюсь?
Ответ №1:
Для достижения этой цели вы можете написать макрос VB, например, следующим образом:
Sub Refresh_every_second()
'
' Refresh_every_second Macro
'
'
Selection.QueryTable.Refresh BackgroundQuery:=False
Application.OnTime Now TimeValue("00:00:01"), "Refresh_every_second"
End Sub
Этот макрос обновляет источник данных, а затем вызывает себя рекурсивно каждую секунду.
Примечание:
- Чтобы обновить все страницы, используйте
ActiveWorkbook.RefreshAll
- Возможно, вы захотите ввести средства остановки этого макроса, такие как щелчок или нажатие клавиши.
Редактировать: чтобы обновить конкретное подключение к данным, вы можете использовать:
ActiveWorkbook.Connections("Data Connection Name").Refresh
Комментарии:
1. Отлично, я попробую. Спасибо, Джо. Считаете ли вы, что обновление этого ежесекундно создаст проблемы с работой на ПК persons?
2. С точки зрения функциональности все работает; то есть поток пользовательского интерфейса не блокируется. Что касается производительности, это, вероятно, зависит от количества и размера ваших наборов данных. Например, в моей системе обновление набора данных размером 16×16 через Интернет использует около 3% системного процессора.
3. Спасибо за вашу помощь, Джо Сиск.