さり海馬

Thoughts walk away, blog stays.

pyExcelerator にはシート名でシートにアクセスする手段がない?

    @accepts(object, (str, unicode))    
    def add_sheet(self, sheetname):
        import Worksheet
        self.__worksheets.append(Worksheet.Worksheet(sheetname, self))
        return self.__worksheets[-1]

    @accepts(object, int)    
    def get_sheet(self, sheetnum):
        return self.__worksheets[sheetnum]

となっていて、get_sheet() の引数はシート番号なんだけど、あるブック上のシート番号を取得する方法が…ないの? 仕方が無いので禁断のマングリング破り*1

def get_sheetnum_byname( workbook, sheetname ):
    idx = 0
    for sheet in workbook._Workbook__worksheets:
        if sheet.get_name() == sheetname:
            return idx
        idx += 1
   raise ValueError( 'No such sheet name:%s' % sheetname )

def get_sheet_byname( workbook, sheetname ):
    return workbook.get_sheet( get_sheetnum_byname( workbook, sheetname ) ) 

*1:すいません、まともに継承するのが面倒くさかったです