- 论坛徽章:
- 0
|
本帖最后由 oatt 于 2010-09-08 16:04 编辑
采用win32com写了一个操作EXCEL的类,当把这个类和程序主体放在一个文件里时,可以正确运行,
当初是类和程序主体部分放在一起的,运行起来没问题。
可是现在程序越来越长,并且不同的任务还要重写程序,想把类单列出来,每次import就可以了,不用每个程序里都放老长一段类的代码。
但是当把这个类单独放入一个文件,当作模块来导入时,就提示错误如下:
环境是activepython2.5.2。- >>> Traceback (most recent call last):
- File "C:\Python25\Lib\SITE-P~1\PYTHON~1\pywin\framework\scriptutils.py", line 310, in RunScript
- exec codeObject in __main__.__dict__
- File "F:\ccrf\kit\cr\excel_test.py", line 6, in <module>
- sour=excel_op.xml(targetfile)
- File "F:\ccrf\kit\cr\excel_op.py", line 3, in __init__
- print 'book name %s'%(self.xmlBookName)
- NameError: global name 'win32com' is not defined
- >>>
复制代码 文件是:excel_test.py- if __name__=="__main__":
- import win32com.client
- import excel_op
- targetfile='region_total.xls'
- sour=excel_op.xml(targetfile)
- sour.xmlApp.Visible=1
- print sour.getCell('1',1,1)
复制代码 写的类是:excel_op.py
xml类中到init时就提示global win32com not defined 错误。
当把excel_op.py的内容复制到excel_test.py后,可以执行。
搞不明白这是为什么?曾经以为是import的位置问题,可试过后,发现不是。- class xml:
- def __init__(self,filename=None):
- self.xmlApp=win32com.client.Dispatch('Excel.Application')
- self.once = 1
- if filename:
- self.filename = filename
- self.xmlBook=self.xmlApp.Workbooks.Open(filename)
- else:
- self.xmlBook=self.xmlApp.Workbooks.Add()
- self.filename=''
- self.xmlBookName=self.xmlBook.name
- print 'book name %s'%(self.xmlBookName)
-
复制代码 |
|