Доступ к объектам автоматизации Microsoft из Python - PullRequest
4 голосов
/ 18 марта 2009

У меня есть набор макросов, которые я превратил в надстройку в Excel. Макросы позволяют мне взаимодействовать с другой программой, имеющей так называемые объекты автоматизации Microsoft, которые обеспечивают некоторый контроль над тем, что делает другая программа. Например, в надстройке есть инструмент фильтрации, который фильтрует список, предоставленный другой программой, для сопоставления со списком в книге Excel. Это медленно, хотя. У меня может быть пятьдесят тысяч строк в другой программе, и я хочу отфильтровать все строки, которые не соответствуют списку из трех тысяч строк в Excel. Этот тип соответствия занимает около 30-40 минут. Я начал задаваться вопросом, есть ли способ сделать это с Python вместо этого, так как я подозреваю, что процесс сопоставления может быть сделан в считанные секунды.

Отредактировано:

Спасибо. Основываясь на предложении взглянуть на книгу Хаммонда, я обнаружил ряд ресурсов. Однако, хотя я все еще исследую это, похоже, что многие из них старые. Например, книга Хаммонда была опубликована в 2000 году, что означает, что написание было закончено почти десять лет назад. Исправление Я только что нашел пакет под названием PyWin32 со сборкой 2/2009.

Это должно начать меня. Спасибо

Ответы [ 4 ]

15 голосов
/ 18 марта 2009

Вам, вероятно, понадобится пакет win32com.

Это пример примера, который я нашел по адресу: http://www.markcarter.me.uk/computing/python/excel.html, который показывает, как использовать com с Excel. Это может быть хорошим началом.

# this example starts Excel, creates a new workbook, 
# puts some text in the first and second cell
# closes the workbook without saving the changes
# and closes Excel.  This happens really fast, so
# you may want to comment out some lines and add them
# back in one at a time ... or do the commands interactively


from win32com.client import Dispatch


xlApp = Dispatch("Excel.Application")
xlApp.Visible = 1
xlApp.Workbooks.Add()
xlApp.ActiveSheet.Cells(1,1).Value = 'Python Rules!'
xlApp.ActiveWorkbook.ActiveSheet.Cells(1,2).Value = 'Python Rules 2!'
xlApp.ActiveWorkbook.Close(SaveChanges=0) # see note 1
xlApp.Quit()
xlApp.Visible = 0 # see note 2
del xlApp

# raw_input("press Enter ...")
5 голосов
/ 18 марта 2009

Марк Хаммонд и Энди Робинсон написали книгу о доступе к объектам Windows COM из Python.

Здесь - пример использования Excel.

0 голосов
/ 18 марта 2009

Однако, хотя я все еще исследую, похоже, что многие из них старые.

COM старый. Интерфейс не изменился с 1993 года.

Я также не вижу пакет на веб-сайте Python.org. Я искал пакеты COM, но ничего полезного не увидел.

http://python.net/crew/mhammond/win32/ http://sourceforge.net/projects/pywin32/

Последнее обновление было сделано в феврале 2009 г. и включает поддержку Python 3.0.

0 голосов
/ 18 марта 2009

Насколько я знаю, возможно создание COM-объектов (то есть, что такое объекты автоматизации) в Python на Windows. Тогда при условии, что вы можете получить списки с помощью автоматизации, будет легко сделать то, что вы хотите в python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...