2012-08-14 52 views
1

我必须编写一个非常恼人的脚本,它使用一个excel文件来更新另一个脚本,但是因为您不能直接编辑xls文件,也不能插入行,所以我不得不即兴创作。你可以在不同的函数中使用xlwt工作簿的同一个实例吗?

现在我的问题是: 使用Python的xlwt模块(使用2.7x),当您创建工作簿并且正在处理它时,如何写入在不同函数中创建的同一工作表?我是否可以通过变量名来回传递工作簿?如果是这样,我如何访问我制作的第一张工作表,工作簿[0]?

我有多个函数需要与这个xlwt xls文件进行交互,所以我只想确保我可以将它传递给不同的函数。

谢谢!

回答

2

...是

import xlwt 
class MyWorkbook: 
    ''' allow access to a workbooks sheets''' 
    def __init__(self,*args,**kwargs): 
     self.wb = xlwt.Workbook(*args,**kwargs) 
     self.sheets = [] 
    def add_sheet(self,sheet_name): 
     self.sheets.append(self.wb.add_sheet(sheet_name)) 
     return self.sheets[-1] 
    def GetSheetByIndex(self,n): 
     return self.sheets[n] 
    def save(self,fname_or_stream): 
     return self.wb.save(fname_or_stream) 

def CreateWB(): 
    ''' return a MyWorkbook instance with 1 sheet''' 
    m= MyWorkbook() 
    m.add_sheet("first_sheet") 
    return m 
def ModifySheet0(mwb): 
    '''uses instance of MyWorkbook and modifies sheet0''' 
    s = mwb.GetSheetByIndex(0) 
    s.write(0,0,"Hello World!") 
def DoItAll() 
    '''passing around MyWorkbook''' 
    wb = CreateWB() 
    ModifySheet0(wb) 
    wb.save("somefile.xls") 
+0

感谢您!这为我解决了很多事情。 – 2012-08-14 18:17:15

+0

嘿,你的解释对于几乎所有的东西都有帮助,但是我还有最后一个问题,因为我在代码的最后部分出现了错误。我得到这个错误: AttributeError:'工作簿'对象没有属性'工作表' ,如果我没有弄错意味着我不能使用.sheets []从xlwt工作簿访问特定工作表。有没有解决方法,或者我忘了导入一些东西? – 2012-08-15 16:19:37

+0

你做错了什么......工作表是MyWorkbook的一部分而不是工作簿......你必须让一个类保持跟踪 – 2012-08-15 16:25:39

相关问题