2015-03-08 31 views
6

Mam dostawcę danych, który zapewnia łącze DDE (którego można używać w programie Excel) i plik exe, który działa w tle, który służy jako Menedżer danych (nie wiem, czy to jest nazywany jako serwer DDE), a łącze DDE łączy się z tym plikiem exe.Pobierz dane przez DDE w Pythonie pomijając Excel

Chcę pominąć program Excel i pracować bezpośrednio w języku Python. Widziałem kilka przykładów o DDE ale wszyscy byli w Pythonie 2 i używam Python 3.

Widziałem przykłady na internecie, że zrobić coś takiego:

import win32ui 
import dde 
... 
... 
server = dde.CreateServer() 
server.Create("SomeName") 
... 

Ale te przykłady pokazują, jak stworzyć Serwer DDE. W moim przypadku, jest istniejąca exe, który jest zarządcą danych (serwer DDE może być?) Oraz w programie Excel jest menu, za pomocą której można uzyskać dane, takie jak

' = DataProviderFunc1(Param1, Param2)' 
' = DataProviderFunc2(Param1, Param2)' 

Chcę napisać kod w Python, który bezpośrednio pobiera dane wyjściowe z ' = DataProviderFunc1(Param1, Param2)' itp., Zamiast otwierania arkusza Excela, a następnie pozwalania Pythonowi na odczytanie danych wyjściowych z arkusza Excela.

Czy to możliwe?

Używam Pythona 3.4. Dzięki

Wydaje się, że na module DDE jest bardzo mało dokumentów, np. http://docs.activestate.com/activepython/2.4/pywin32/dde.html

+1

Czy kiedykolwiek znalazłeś odpowiedź? –

Odpowiedz

0

Najbliższe do dokumentacji, że znalazłem tutaj: client example, server example

Przykłady nie są nawet skomentował więc pozwól mi podzielić co ja zorientowali się z komentarzem przykład:

import win32ui 
import dde 

#apparently "servers" talk to "servers" 
server = dde.CreateServer() 
#servers get names but I'm not sure what use this name 
#has if you're acting like a client 
server.Create("TestClient") 
#use our server to start a conversation 
conversation = dde.CreateConversation(server) 

# RunAny is the server name, and RunAnyCommand is the topic 
conversation.ConnectTo("RunAny", "RunAnyCommand") 
# DoSomething is the command to execute 
conversation.Exec("DoSomething") 
# For my case I also needed the request function 
# request somedata and save the response in requested_data. 
requested_data = conversation.Request("somedata") 

Kluczowymi funkcjami wydają się być Exec i Request. Oba przyjmują łańcuchy, więc w konkretnym przypadku musisz dowiedzieć się, czego chce twój serwer.