2012-04-15 50 views
2

我想学习一些蟒蛇,我希望python与使用win32模块的Excel进行交互。我在网上找到了一个关于wiki here的基本示例。蟒蛇与Excel之间的Python COM

但它不起作用。 这是我得到的错误。

Traceback (most recent call last): 
    File "C:/Users/Greg/Desktop/python programming/excel2.py", line 8, in <module> 
    sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter)) 
NameError: name 'Application' is not defined 

我的问题是是什么线究竟为什么我会得到一个错误?

sheet.Range( “A2”)。值= STR(Application.SIFilter(无,c.siObjectFilter))

import win32com.client 
from win32com.client import constants as c 

excel = win32com.client.Dispatch("Excel.Application") 
book = excel.Workbooks.Add() 
sheet = book.Worksheets(1) 
sheet.Range("A1").Value = "Hello World!" 
sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter)) 
book.SaveAs("c:\simple_example.xls") 

sheet = None 
book = None 
excel.Quit() 
excel = None 

谢谢,对不起,如果我是超级菜鸟....

+0

你是从命令行还是从Softimage内部运行它? 'Application'对象只有在执行后者时才存在。 – kindall 2012-04-15 18:14:15

回答

3

您链接的代码看起来像是直接从this blog中拉出。从它的声音来看,你并没有试图与Softimage整合。你会想要把这条线路拿出来。

此外,如果您使用的是Excel 2007或更高版本,则需要写入xlsx文件,因为这就是Excel.Application将为您创建的文件。

下面是与这些更改相同的示例代码。

import win32com.client 

excel = win32com.client.Dispatch("Excel.Application") 
book = excel.Workbooks.Add() 
sheet = book.Worksheets(1) 
sheet.Range("A1").Value = "Hello World!" 
book.SaveAs("c:\simple_example.xlsx") # or .xls depending on version 

sheet = None 
book = None 
excel.Quit() 
excel = None 
0

在这一行:

sheet.Range("A2").Value = str(Application.SIFilter(None, c.siObjectFilter)) 

你试图把Application.SIFilter(None, c.siObjectFilter)为字符串。您没有定义名为Application的对象。我没有运行代码,但我认为它可以工作,如果你写excel.SIFilter(None, c.siObjectFilter)。如果你只是想学习,写点别的,你会得到一个excel文件。