import msvcrt
import clr
clr.AddReference("Microsoft.Office.Interop.Excel")
import Microsoft.Office.Interop.Excel as Excel
excel = Excel.ApplicationClass()
excel.Visible = True # makes the Excel application visible to the user - will use this as True for debug
excel.DisplayAlerts = False # turns off Excel alerts since I don't have a handler
print ("Excel: " + str(type(excel)))
print ("Workbooks: " + str(type(excel.Workbooks)))
print ("Workbooks count: " + str(excel.Workbooks.Count))
#wb = excel.Workbooks.Open(r'C:\Projects\Experiments\Python\ExcelInterop\Test.xlsx')
print ("Press any key")
msvcrt.getch()
C:\Projects\Experiments\Python\ExcelInterop>exceltest.py
Excel:
Workbooks:
Traceback (most recent call last):
File "C:\Projects\Experiments\Python\ExcelInterop\exceltest.py", line 12, in
print ("Workbooks count: " + str(excel.Workbooks.Count))
AttributeError: '__ComObject' object has no attribute 'Count'
Я запускаю командную строку администратора в Windows 10.
Я пробовал Python 2.7 и 3.5 (используя py -3 exceltest.py).
Microsoft.Office.Interop.Excel — версия 15.0.4420.1017 (Office 2013).
Я создал аналогичное консольное приложение .NET, которое работало нормально.
Я использовал ILDASM для проверки ссылок из Microsoft.Office.Interop.Excel, а затем gacutil -l, чтобы дважды проверить, что все сборки, на которые есть ссылки, находятся в GAC.
На всякий случай я скопировал Office.dll, stdole.dll и Microsoft.Vbe.Interop.dll в папку, где находится сценарий Python. бег. Это сборки, добавляемые в папку сборки консольного приложения .NET, если я не встраиваю типы взаимодействия для Microsoft.Office.Interop.Excel.
Я пытаюсь использовать Microsoft.Office.Interop.Excel из сценария Python:
[code]import msvcrt import clr clr.AddReference("Microsoft.Office.Interop.Excel") import Microsoft.Office.Interop.Excel as Excel
excel = Excel.ApplicationClass() excel.Visible = True # makes the Excel application visible to the user - will use this as True for debug excel.DisplayAlerts = False # turns off Excel alerts since I don't have a handler
[code]C:\Projects\Experiments\Python\ExcelInterop>exceltest.py Excel: Workbooks: Traceback (most recent call last): File "C:\Projects\Experiments\Python\ExcelInterop\exceltest.py", line 12, in print ("Workbooks count: " + str(excel.Workbooks.Count)) AttributeError: '__ComObject' object has no attribute 'Count' [/code]
[list] [*]Я запускаю командную строку администратора в Windows 10. [*]Я пробовал Python 2.7 и 3.5 (используя py -3 exceltest.py). [*]Microsoft.Office.Interop.Excel — версия 15.0.4420.1017 (Office 2013). [*]Я создал аналогичное консольное приложение .NET, которое работало нормально. [*]Я использовал ILDASM для проверки ссылок из Microsoft.Office.Interop.Excel, а затем gacutil -l, чтобы дважды проверить, что все сборки, на которые есть ссылки, находятся в GAC. [*]На всякий случай я скопировал Office.dll, stdole.dll и Microsoft.Vbe.Interop.dll в папку, где находится сценарий Python. бег. Это сборки, добавляемые в папку сборки консольного приложения .NET, если я не встраиваю типы взаимодействия для Microsoft.Office.Interop.Excel. [*]У меня установлен .NET для Python для версий 2.7 и 3.5 (из https://pypi.python.org/pypi/pythonnet) [/list]