【问题标题】:Can you use the same instance of a xlwt workbook in different functions?您可以在不同的功能中使用相同的 xlwt 工作簿实例吗?
【发布时间】:2012-08-14 17:27:49
【问题描述】:

我必须编写一个非常烦人的脚本,它使用一个 excel 文件来更新另一个文件,但是因为您不能直接编辑 xls 文件,也不能插入行,所以我不得不即兴发挥。

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

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

谢谢!

【问题讨论】:

    标签: python excel xls xlwt


    【解决方案1】:

    ...是的

    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")
    

    【讨论】:

    • 嘿,您的解释对几乎所有事情都有帮助,但我有最后一个问题,因为我的代码的最后一部分几乎都有错误。我收到此错误:AttributeError: 'Workbook' object has no attribute 'sheets' 如果我没记错的话,这意味着我不能使用 .sheets[] 从 xlwt 工作簿访问特定工作表。是否有解决方法或者我忘记导入某些内容?
    • 是的,你做错了什么...工作表是 MyWorkbook 的一部分,而不是 Workbook ...您必须开设一个课程来跟踪
    • 您的 MyWorkbook 类不是使用 xlwt 的 Workbook 中的方法吗?无论如何,我只是将我添加的工作表做成了一个全局变量,所以我不必经常检索它。
    猜你喜欢
    • 2018-01-01
    • 2022-11-19
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多