Отправка текущих данных в Excel

#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. Спасибо за вашу помощь, Джо Сиск.