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:すいません、まともに継承するのが面倒くさかったです