我正在使用xlsxwriter
,我创建了一个类,在那里我创建了一个工作簿。然后我添加了两个工作表。
现在我已经编写了一个将数据写入其中一个工作表的方法,但是现在我想在两个工作表上都使用它。这是一个简单的例子来解释这种情况:
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
或{
所以问题是:我该怎么做?在
我想出了一个非常糟糕的解决方案,比如:
^{pr2}$但老实说我不喜欢。有没有合适的方法来做,还是像一件完全不合理的事情?在
最好使用
workbook.get_worksheet_by_name()
方法,而不是if块编辑:或者您可以使用getattr()函数,例如
^{pr2}$也许您应该考虑使用一个额外的类
ExcelWorksheet
,以便将与它们相关的所有逻辑放入其中:这样,您可以将代码重构为:
^{pr2}$我会这样做:
通过使用
defaultdict
,您不需要为每个工作表显式保留行计数变量。write_data
函数接受一个新参数ws
,以便您可以设置应该写入的工作表。写一行可以分解成一个单独的方法来减少代码重复。在这能回答你的问题吗?在
编辑:
默认值无法访问
^{pr2}$self
,但您可以很容易地解决此问题:相关问题 更多 >
编程相关推荐