Я использую xlsxwriter
, и я создал класс, в котором я создал рабочую книгу.Затем я добавил 2 листа.Теперь я написал метод, который записывает данные на одну из таблиц, но теперь я хотел бы использовать его на обеих таблицах.Это простой пример для объяснения ситуации:
import xlsxwriter
class ExcelWorkbook():
def __init__(self, filename):
self.wb = xlsxwriter.Workbook(filename)
self.ws1 = self.wb.add_worksheet('Num')
self.ws1LineCount = 0
self.ws2 = self.wb.add_worksheet('Result')
self.ws2LineCount = 0
def write_data(self, data, title):
self.ws1.write_row(self.ws1LineCount, 0, title)
self.ws1LineCount += 1
self.ws1.write_row(self.ws1LineCount, 0, data)
self.ws1LineCount += 1
xlsxWorkbook = ExcelWorkbook('Test2.xlsx')
numArr = (0.000000520593523979187, 13.123456789, 1.789456, 0.002345, 0.00123, 1)
titleBar = ('Date', 'quantity', 'Average [m]', 'Standard Dev [m]', 'Test', 'Success')
xlsxWorkbook.write_data(numArr, titleBar)
Теперь я хотел бы использовать метод write_data
для обоих листов, поэтому я решил передать лист в качестве параметра, но, к сожалению,это не так просто, так как я не могу передать переменную экземпляра self.ws1
или self.ws2
.
Итак, вопрос: как я могу это сделать?
Я придумал очень неприятное решение, подобное этому:
def write_data(self, data, title, instance = 'ws1'):
if instance == 'ws1':
instance = self.ws1
lineCounter = self.ws1LineCount
elif instance == 'ws2':
instance = self.ws2
lineCounter = self.ws2LineCount
instance.write_row(self.ws1LineCount, 0, title)
lineCounter += 1
instance.write_row(self.ws1LineCount, 0, data)
lineCounter += 1
но, честно говоря, оно мне не нравится.Есть ли правильный способ сделать это или это совершенно неразумно?